vue设置代理
这里vue代理的是 vue 静态服务器做代理。
使用的是 http-proxy-middleware 这个模块。(相当于 node.js 的一个人插件)
// vue-cli3.0 里面的 vue.config.js
module.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 , 才会起作用呐 !