我有一个节点服务器,我正在使用http-proxy-middleware
代理我的api请求,类似于this post中发生的情况。当我代理到真正的生产服务器时,一切正常,但是当我将代理指向本地服务器时,它就无法工作。
这是我的代码:
app.use('/_api', proxy({target: 'http://localhost:9000', changeOrigin: true}));
服务器开启:
http://localhost:9000/hello
正在运行(我可以从我的浏览器访问它),但是,当我尝试从我自己的服务器访问它时,如下所示:
http://localhost:3000/_api/hello
我得到了:
无法GET / _api / hello
如果我将localhost:9000替换为真实服务器,一切正常......
答案 0 :(得分:7)
您的代理请求正在尝试使用原始请求路径访问本地服务器。
例如,当您提出要求时
http://localhost:3000/_api/hello
您的代理正在尝试访问
http://localhost:9000/_api/hello
_api/hello
上的localhost:9000
路径不存在,Cannot GET /_api/hello
错误会显示该路径。
您需要重写代理请求路径以删除_api
部分:
app.use('/_api', proxy({
target: 'http://localhost:9000',
changeOrigin: true,
pathRewrite: {
'^/_api' : '/'
}
}));