- 参数可以看 http-proxy-middleware是一致的共通的
- 文章来源 https://www.jianshu.com/p/95b2caf7e0da
- 在vuejs-templates,也就是vue-cli的使用的模板插件里,有关于API proxy的说明,使用的就是这个参数。
- https://vuejs-templates.github.io/webpack/proxy.html
- 这个参数主要是一个地址映射表,你可以通过设置将复杂的url简化,例如我们要请求的地址是api.xxxxxxxx.com/list/1,可以按照如下设置:
1
2
3
4
5
6
7
8
9proxyTable: {
'/list': {
target: 'http://api.xxxxxxxx.com',//接口域名
logLevel:'debug',//在控制台看更多的信息和域名指向
pathRewrite: {
'^/list': '/list'
}
}
} - 这样我们在写url的时候,只用写成/list/1就可以代表api.xxxxxxxx.com/list/1.
- 那么又是如何解决跨域问题的呢?其实在上面的’list’的参数里有一个changeOrigin参数,接收一个布尔值,如果设置为true,那么本地会虚拟一个服务端接收你的请求并代你发送该请求,这样就不会有跨域问题了,当然这只适用于开发环境。增加的代码如下所示:
1
2
3
4
5
6
7
8
9proxyTable: {
'/list': {
target: 'http://api.xxxxxxxx.com',//接口域名
changeOrigin: true,//是否跨域
pathRewrite: {
'^/list': '/list'
}
}
} - vue-cli的这个设置来自于其使用的插件http-proxy-middleware
- github:https://github.com/chimurai/http-proxy-middleware
- 深入了解的话可以看该插件配置说明,似乎还支持websocket,很强大的插件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17proxyTable: {
'/api':{
//服务器接口
target:'http://localhost:8080',
changeOrigin: true,//是否跨域
//接下来希望做一个路径替换
pathRewrite:{
//一旦请求的地址是以API开头的那么就替换请求到/static/mock的文件夹下
//当访问api的时候axios.get('/api/index.json')会自动帮你替换成axios.get('/static/mock/index.json')
'^/api': '/static/mock'
},
//如果接口验证的话可以设置请求头
header:{
'Cookie':'...'
}
}
},