vue设置代理不起作用
使用vue写前端界面时,需调用后端接口展现查询的数据,于是设置代理实现跨域,在config/index.js中添加代理,代码如下:
proxyTable:{
// 匹配 /dev-api 开头的请求, 比如:A网站:https://localhost:8888 中的index.html 页面发送AJax请求:/dev-api/data.json
'dev-api': {
target:'http://localhost:3001',
// 开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,
// 并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
changOrigin: true, //开启代理
pathRewrite: {
"^/dev-api": ''
}
}
},
运行后发现报错404
测试后端接口无问题,着重看代理部分代码,百度后发现 “dev-api"前面应加”/",
否则会出现上述错误。
完整代码如下:
proxyTable:{
// 匹配 /dev-api 开头的请求, 比如:A网站:https://localhost:8888 中的index.html 页面发送AJax请求:/dev-api/data.json
'/dev-api': {
target:'http://localhost:3001',
// 开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,
// 并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
changOrigin: true, //开启代理
pathRewrite: {
"^/dev-api": ''
}
}
},
除此之外,修改代理后应重启一下,否则修改内容不生效。
vue配置代理方式
正向代理配置
环境配置文件 .env.development
ENV = 'development'
VUE_APP_BASE_API="/dev-api"
vue配置文件 vue.config.js
devServer: {
proxy:'http://localhost:8080'//所有的接口请求都会被代理到这个路径上
},
devServer: {
proxy:{
'/dev-api':{//只要是这个路径下的请求都会被代理到target中
target:'http://localhost:8888',
pathRewrite:{'^/dev-api':''}//路径重写:/dev-api路径将不会出现,如果改成'^/dev-api':'test',则重写的路径/dev-api会变成test
}
}
},
注意点:使用正向代理时,不要手动的写全路径,不要手动的写全路径,不要手动的写全路径,(重要的事情说三遍)写了全路径则代理失效
全路径:http://localhost:8080 即:协议、域名、端口
只要写一个代理路径即可:VUE_APP_BASE_API =/dev-api
环境变量配置文件
你可以在你的项目根目录中放置下列文件来指定环境变量:
.env # 在所有的环境中被载入
.env.local # 在所有的环境中被载入,但会被 git 忽略
.env.[mode] # 只在指定的模式中被载入
.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
# mode 代表环境变量:development、production和test。不同的文件名在不同的环境下自动生效
请注意,只有 NODE_ENV,BASE_URL 和以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。
这是为了避免意外公开机器上可能具有相同名称的私钥。
目录
.env.production//生产环境配置
.env.develoption//开发环境配置
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。