我已经使用angular2 CLI设置了反向代理,如下所示:
{
"/api/customer/*": {
"target": "http://localhost:9010",
"secure": false
}
}
我的问题是远程API在路径/客户上公开服务,但反向代理发送的请求在/ api / customer上。
有没有办法从反向代理发送的请求中删除/ api? (不要回答“只需从你的http请求中删除/ api”,因为我在/ customer上有一个有角度的路线。)
谢谢,
纳米
答案 0 :(得分:10)
您可以使用pathRewrite
选项轻松完成此操作,如下所示:
proxy: {
'/api/customer/*': {
target: 'http://localhost:9010',
pathRewrite: {'^/api' : ''}
}
}
您还可以查看Webpack documentation以获取更多信息。
答案 1 :(得分:0)
使用与Alex答案相同的配置进行此工作。但是,将您的实际API请求发送到前端Web服务器而不是后端服务器至关重要。
例如,我的后端在端口2777上运行,而我的前端在端口1777上运行
module.exports = {
'/api': {
target: 'http://localhost:2777',
pathRewrite: {'^/api': ''},
logLevel: 'debug'
}
}
environment.ts中API请求的基本URL为:
apiBaseUrl: 'http://localhost:1777/api'
实际请求如下:
login(userCredentials: UserCredentials): Observable<User> {
return this.http.post(environment.apiBaseUrl + '/auth/login', userCredentials).pipe(
tap((user: User) => { this.authUser = user })
)
}
这很棒,因为它避免了后端服务器上对CORS策略的需求。希望这对某人有帮助。当我执行此设置时,我总是忘记将HTTP请求指向前端服务器,这会导致无休止地找出问题所在。