Vue - 代理
开发环境中跨域
Vue-cli 创建的项目,可以直接利用 Node.js 代理服务器,通过修改vue proxyTable接口实现跨域请求。在vue-cli项目中的config文件夹下的index.js配置文件中,修改前的dev:
const proxy = require('http-proxy-middleware'); module.exports = { devServer:{ host: 'localhost',//target host port: 8080, //proxy:{'/api':{}},代理器中设置/api,项目中请求路径为/api的替换为target proxy:{ '/api':{ target: 'http://192.168.1.30:8085',//代理地址,这里设置的地址会代替axios中设置的baseURL changeOrigin: true,// 如果接口跨域,需要进行这个参数配置 //ws: true, // proxy websockets //pathRewrite方法重写url pathRewrite: { '^/api': '/' //pathRewrite: {'^/api': '/'} 重写之后url为 http://192.168.1.16:8085/xxxx //pathRewrite: {'^/api': '/api'} 重写之后url为 http://192.168.1.16:8085/api/xxxx } }} }, //... }
开发环境运行时配置:.env.development
# 开发环境配置 ENV = 'development' # 公共服务子平台/开发环境 VUE_APP_BASE_API = '/dev-api' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true
npm run dev 运行:
const service = axios.create({ // axios中请求配置有baseURL选项,表示请求URL公共部分 baseURL: process.env.VUE_APP_BASE_API, // 超时 timeout: 10000 })
会自动将后台请求路径替换为 xxx/dev-api ,然后触发代理至真正后台。
pathRewrite含义
用代理,首先你得有一个标识,告诉他你这个连接要用代理,不然的话,可能你的 html,css,js这些静态资源都跑去代理。所以我们只要接口用代理,静态文件用本地。'/iclient': {}
, 就是告诉node
,我接口只要是'/iclient'
开头的才用代理。所以你的接口就要这么写 /iclient/xx/xx
。最后代理的路径就是 http://xxx.xx.com/iclient/xx/xx
。可是不对啊,我正确的接口路径里面没有/iclient
啊,所以就需要 pathRewrite,
用'^/iclient':''
, 把'/iclient'
去掉,这样既能有正确标识,又能在请求接口的时候去掉iclient
。当然如果本身的接口中就有/iclient,那么就可以把pathRewrite这个参数去掉。
posted on 2021-08-26 14:38 TrustNature 阅读(206) 评论(0) 编辑 收藏 举报