vue设置代理不起作用问题及解决
作者:姜意%
这篇文章主要介绍了vue设置代理不起作用问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
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//开发环境配置
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。