- 问题1:今天做后台管理系统的时候,首先是在通过 proxy 代理解决跨域的时候,再写要代理的目标服务器target的时候没有写端口号这样:
target: 'http://xx.xx.xxx.xxx',,点击登录就一直显示没有权限,应该是之前的接口被改了,后面加上后面的端口号:8170,就可以正常访问了:target: 'http://xx.xx.xxx.xxx:8170', - 问题2:也是入坑了很久,一直没想通,当我通过 proxy 代理解决跨域的问题时候,代理配置如下:
proxy: {
// 当我们的本地的请求 有/dev-api的时候,就会代理我们的请求地址向另外一个服务器发出请求!
'/dev-api': {
target: 'http://xx.xx.xxx.xxx:8170',',
pathRewrite: { '^/dev-api': '' },
点击登录一直转转转,没反应,后面就弹出超时的错误,请求结果直接成这样
- 分析:
(1)在 Apifox 上测试接口,数据能正常返回,说明接口是没问题。
(2)代理了get请求也能够请求成功,说明代理配置上也是没问题的。
(3)猜测可能是代理后post的数据格式上有问题。
- 解决:
通过配置onProxyReq去处理返回的数据。
vue-config.js中的代理配置代码如下:
```proxy: {
// 当我们的本地的请求 有/dev-api的时候,就会代理我们的请求地址向另外一个服务器发出请求!
'/dev-api': {
// 要代理的目标服务器地址
target: ''http://xx.xx.xxx.xxx:8170',,
// 重写路径:去掉路径中开头的'/dev-api'
pathRewrite: { '^/dev-api': '' },
onProxyReq:function (proxyReq, req, res, options) {
if (req.body) {
let bodyData = JSON.stringify(req.body);
// 例如,如果内容类型是application/x-www-form-urlencoded ->,我们需要更改为application/json
proxyReq.setHeader('Content-Type','application/json');
proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
// 把请求参数写入到代理请求主体中。
proxyReq.write(bodyData);
}
}
- 结果
一直还在学习当中,希望有不对的大佬给我指出,我是喜欢前端的小菜鸟