使用axios发送请求时如何设置代理?
Posted
技术标签:
【中文标题】使用axios发送请求时如何设置代理?【英文标题】:How to set proxy when using axios to send requests? 【发布时间】:2020-01-19 01:51:55 【问题描述】:我正在使用一个名为“并发”的包在本地主机上同时运行我的客户端和服务器。客户端运行在 3000 端口,服务器运行在 5000 端口。我在服务器的 package.json 中设置了代理,方式如下:
"proxy": "https://localhost:5000"
但是当我通过以下方式向客户发出请求时:
const config =
headers:
'Content-Type': 'application/json'
;
const res = await axios.post('/api/users', body, config);
上面写着:POST http://localhost:3000/api/users 404 (Not Found)
。我不明白为什么,但是尽管设置了代理,但 axios 不断向端口 3000 而不是端口 5000 发出请求。问题是什么?
【问题讨论】:
我也遇到过类似的问题,但重启对我有帮助:) 杀死开发服务器和npm start
或任何你使用的东西。
【参考方案1】:
我只想说,添加cors的解决方案不是解决方案。您需要在 package.json 中包含代理 "proxy" : "https://localhost:5000"
,您可能需要重新启动或其他 - 但如果您选择使用 cors,则您允许任何人访问您的 API。这意味着您的数据库对人们来说是开放的。密码、电子邮件、用户等。这一切都被泄露了。
【讨论】:
您好 - 我想确认一下,您的意思是重启机器,还是只重启服务器?【参考方案2】:我让它正常工作。我所做的是:
1) 将axios.post('/api/users', body, config);
更改为axios.post('http://localhost:5000/api/users', body, config);
2) 然后在服务器端的'users' express 路由中,通过安装'cors' npm 包添加CORS功能,然后添加以下行:
const router = express.Router();
...
// add these lines
var cors = require('cors');
router.use(cors());
...
router.post('/', async (req, res) =>
...
);
【讨论】:
我通过将 proxy:localhost:5000 放入 package.json 然后将 axios.post('/api/users',body,config) 放入路由器中使事情正常工作,但是当我设置时事情停止工作向上调试 硬编码这不是一个好主意。拥有一个配置变量要好得多。如果您更改某些内容,您将硬编码所有对本地产品等的请求。def 不是要走的路。【参考方案3】:据我了解您的问题,您需要参考 Axios 开发人员文档。暂时的。 check this
import axios, AxiosInstance from 'axios';
import * as tunnel from 'tunnel';
const agent = tunnel.httpsOverHttp(
proxy:
host: 'proxy.mycorp.com',
port: 8000,
,
);
const axiosClient: AxiosInstance = axios.create(
baseURL: 'https://some.api.com',
httpsAgent: agent,
);
【讨论】:
不,不是这个。此配置是当您在公司代理或其他东西后面时,这只是将本地 xhr 请求重定向到托管在不同端口的后端服务器。【参考方案4】:在我的情况下,我没有检查好,看来调用实际上是转发到代理地址的 api 服务器。 检查服务器是否正在运行以及它是否正在接收您的呼叫。
【讨论】:
以上是关于使用axios发送请求时如何设置代理?的主要内容,如果未能解决你的问题,请参考以下文章