vue设置代理
这里vue代理的是 vue 静态服务器做代理。
使用的是 http-proxy-middleware 这个模块。(相当于 node.js 的一个人插件)
// vue-cli3.0 里面的 vue.config.jsmodule.export = {devServer: {'/api':{target: 'http://test.xxx.com', // 后台接口域名ws: true, // 如果要代理 websockets,配置这个参数secure: false, // 如果是https接口,配置这个参数changeOrigin: true, // 是否跨域pathRewrite: {'^/api': '/'}}}}/*请求地址:'/api/xxx/xx'当node服务器遇到以‘/api’开头的请求,就会把 target 字段加上。然后请求地址就变成:‘http://test.xxx.com/api/xxx/xx’然后下面的 pathRewrite 表示的就是 把 ‘/api’替换成空,那么请求地址(有‘/api‘开头的请求)就变成 ‘ttp://test.xxx.com/xxx/xx’*/
vue proxyTable接口跨域请求调试
在Vue-cli项目中的config文件夹下面有三个JS文件, 首先 ,在 index.js中的Dev{ }中做如下配置
proxyTable: {'/api': {target: "http://www.baidu.com", // API服务所在IP及端口号changeOrigin: true, // 如果设置为true,那么本地会虚拟一个服务器接收你的请求并代你发送该请求,这样就不会有跨域问题(只适合开发环境)pathRewrite: {'^/api': '' // 重写路径}}},
然后,配置开发环境 , 即在 dev.env.js中配置
'use strict'const merge = require('webpack-merge')const prodEnv = require('./prod.env')module.exports = merge(prodEnv, {NODE_ENV: '"development"',BASE_API: '"http://www.baidu.com"' //配置为本地地址才会访问到本地虚拟的服务器,从而通过第1步中代理访问API服务,避免跨域 })}
最后 ,配置生产环境 ,即在prod.env.js中配置
'use strict'module.exports = {NODE_ENV: '"production"',BASE_API: '"http://www.baisu.com"' //产品环境}
接下来,在组件中调用后台接口
axios({method: "get",url: "api/getdata", //使用 api+具体接口路径params: {id:1}}).then(function(res) {console.log(res)})
最后,最最最重要 的一点, 一定要重新启动项目 npm run dev , 才会起作用呐 !
