在开发中,经常遇到这样一个问题:
可是每次都是通过后端程序员通过设置header来解决的。可是现在我的开发中有这么一个问题,一个项目工程后台有无数个,然而不能让每个后台去帮我设置,这个跨域问题必须要我前端解决。所以我百度查找到了用proxyTable来做代理的方法。
1、首先在文件夹config下面找到index,然后找到proxyTable,你会看到
它默认是为空的。
2、ProxyTable的参数:
context:确定当请求匹配到哪些字段的时请求被代理
options
- options.target:要与url模块解析的url字符串
- option.forward:要用url模块解析的url字符串
- option.agent:要传递到http(s)的对象.request(请参阅节点的
https代理和http代理对象) - option.ssl:要传递给https.createServer()的对象
- option.ws:true/ false:如果要代理websockets
- option.xfwd:true / false,添加x-forward标头
- option.secure:true / false,如果要验证SSL Certs
- option.toProxy:true / false,将绝对URL传递给path(用于代理代理)
- option.prependPath:true / false,默认值:true - 指定是否要将目标路径添加到代理路径
- option.ignorePath:true / false,默认值:false - 指定是否要忽略传入请求的代理路径(注意:如果需要,您将必须附加/手动)。
- option.localAddress:绑定传出连接的本地接口字符串
- option.changeOrigin:true / false,默认值:false - 将主机头的起始位置更改为目标URL
- option.auth:基本认证,即'user:password'来计算授权头。
- option.hostRewrite:重写(301/302/307/308)重定向上的位置主机名。
- option.autoRewrite:根据请求的主机/端口重写(301/302/307/308)重定向的位置主机/端口。默认值:false。
- option.protocolRewrite:将(301/302/307/308)上的位置协议重写为“http”或“https”。默认值:null。
- option.cookieDomainRewrite:重写set-cookie标题的域。可能的值:false(默认):禁用cookie重写String:例如,新cookieDomainRewrite: "new.domain"。要删除域,请使用cookieDomainRewrite: ""。
对象:将域映射到新域,用于"*"匹配所有域。例如,保持一个域不变,重写一个域并删除其他域:
cookieDomainRewrite: {
"unchanged.domain": "unchanged.domain",
"old.domain": "new.domain",
"*": ""
}
- option.headers:对象,添加请求头。(实施例:{host:'www.example.org'})
- option.proxyTimeout:当代理没有从目标接收到响应时,超时(以毫秒为单位)这里是它的官方链接:https://github.com/chimurai/http-proxy-middleware
3、运用例子
- 代理一个接口:
proxyTable: {
'/chaos' : {
target:" http://172.32.11.23:10191 ",
changeOrigin: true,
pathRewrite: {
' ^/chaos ' : '/chaos'
}
}
}
- 代理多个接口:
proxyTable: {
'/chaos' : {
target:" http://172.32.11.23:10191 ",
changeOrigin: true,
pathRewrite: {
' ^/chaos ' : '/chaos'
}
},
'/insight' : {
target:" http://172.43.11.33:8080 ",
changeOrigin: true,
pathRewrite: {
' ^/insight ' : ''
}
}
}