使用axios发送请求时如何设置代理?

Tar*_*are 6 node.js express reactjs axios

我正在使用一个名为“并发”的包在本地主机上同时运行我的客户端和服务器。客户端在端口 3000 上运行,而服务器在端口 5000 上运行。我已按以下方式在服务器的 package.json 中设置代理:

"proxy": "https://localhost:5000"
Run Code Online (Sandbox Code Playgroud)

但是当我以以下方式向客户提出请求时:

    const config = {
        headers: {
          'Content-Type': 'application/json'
        }
      };

    const res = await axios.post('/api/users', body, config);
Run Code Online (Sandbox Code Playgroud)

它说:POST http://localhost:3000/api/users 404 (Not Found)。我不明白为什么,尽管设置了代理,axios 仍然不断向端口 3000 而不是端口 5000 发出请求。问题是什么?

And*_*son 5

我只是想说,添加cors的方案并不是解决方案。"proxy" : "https://localhost:5000"您需要在 package.json 中包含代理,您可能需要重新启动或其他操作 - 但如果您选择使用 cors,则您将允许任何人访问您的 API。这意味着您的数据库是完全开放的,可供人们查阅。密码、电子邮件、用户等都已被泄露。


Tar*_*are 2

我让它工作正常。我所做的是:

1)axios.post('/api/users', body, config);改为axios.post('http://localhost:5000/api/users', body, config);

2) 然后在服务器端的“users”快速路由中,通过安装“cors”npm 包来添加 CORS 功能,然后添加以下行:

const router = express.Router();
...
// add these lines
var cors = require('cors');
router.use(cors()); 
...
router.post('/', async (req, res) => {
...
});
Run Code Online (Sandbox Code Playgroud)