【发布时间】:2021-08-19 23:02:48
【问题描述】:
我正在尝试使用http-proxy-middleware 为我的 API 请求配置代理,create react app docs 建议这样做。我在setupProxy.js 文件中这样设置我的代理:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) {
app.use(
createProxyMiddleware("/post", {
target: 'https://postman-echo.com',
changeOrigin: true,
logLevel: 'debug'
})
);
};
然后,我对端点进行简单的 POST:
const response = await fetch("/post", {
method: 'POST',
headers: {
'content-type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({ foo1: "bar1", foo2: "bar2" })
});
console.log(await response.json());
根据 http-proxy-middleware 文档,我应该期望一个代理可以做这样的事情:
[HPM] POST /post -> https://postman-echo.com/post
但是,调试器显示的是:
[HPM] POST /post -> https://postman-echo.com
路径 /post 不会附加到代理请求。目标实际上应该是https://postman-echo.com/post。我的客户端收到 404 错误,因为 https://postman-echo.com 本身与后端的任何内容都不匹配。
如果它确实重新路由正确,我应该期待与 CURL 请求相同的结果
curl -X POST -F 'foo1=bar1' -F 'foo2=bar2' https://postman-echo.com/post
{"args":{},"data":{},"files":{},"form":{"foo1":"bar1","foo2":"bar2"},"headers":{"x-forwarded-proto":"https","x-forwarded-port":"443","host":"postman-echo.com","x-amzn-trace-id":"Root=1-61200c54-7b5809be3e78040f09edcd42","content-length":"240","user-agent":"curl/7.64.1","accept":"*/*","content-type":"multipart/form-data; boundary=------------------------bb54b419e41f4a4a"},"json":null,"url":"https://postman-echo.com/post"}%
但是我 404 因为路径没有添加。为什么路径被遗漏了?
我创建了一个simple app 来重现我的问题。这看起来类似于this issue,但它们不一样(我使用的语法与答案建议的相同)。
【问题讨论】:
标签: javascript node.js proxy http-proxy http-proxy-middleware