问题标签 [http-proxy-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2144 浏览

node.js - “ERR_HTTP_HEADERS_SENT:发送到客户端后无法设置标头”,而 http-proxy-middleware 与 https-proxy-agent 结合使用

Node (Express JS) 中间件使用http-proxy-middleware代理客户端(可能是 Chrome 浏览器)和 jira 服务器之间的请求和响应。它还使用https-proxy-agent添加代理,因为主机服务器需要代理才能访问 Jira API。

请求标头已使用onProxyReq更新。它在 localhost 中完全可以正常工作,因为它不需要代理,但它会在服务器中引发错误“ERR_HTTP_HEADERS_SENT:Cannot set headers after they are sent to the client”

代码实现如下

感谢任何帮助解决它。

0 投票
1 回答
2153 浏览

node.js - 代理的 websocket 连接立即关闭

我有一个 create-react-app 开发服务器代理后端连接(就像一个一样)。突然 websocket 代理停止工作。

我的 setupProxy.js 看起来像这样:

shouldProxy函数在哪里,因为我关于何时代理的逻辑是......非平凡的)。

当浏览器(Firefox 71 或 Chrome 79)创建 websocket 连接时,我可以看到后端收到请求并正常响应,但浏览器收到 400 Bad request 并且 dev-server 控制台有这个:

因此,在代理过程的早期,似乎有些东西正在破坏套接字,但我无法理解是什么。

我目前使用节点 13.5.0、http-proxy 1.18.0 和 http-proxy-middleware 0.20.0 运行;我尝试将节点降级到 12.14.0,将 HPM 降级到 0.19.1,但无济于事。

0 投票
1 回答
2060 浏览

reactjs - 使用 react-scripts 代理 websocket 不起作用

我有一个反应网络应用程序,我使用反应脚本进行开发。我使用代理将请求和 websocket 代理到后端。

我的 package.json :

我有一个 setupProxy.js :

代理适用于 http 请求。React Web 应用程序在 上执行请求,http://localhost:3000/api/foo/bar并且请求在 上代理http://localhost:9140/api/foo/bar

我的问题是 websockets。react web 应用打开一个 websocket on ws://localhost:3000/api/foo/bar,后端接收 websocket 请求并升级它并以 101 http 代码响应。但是反应网络应用程序从未收到此响应。React Web 应用程序收到 400 http 代码响应。所以websocket被关闭了。

我试图找出反应应用程序收到 400 错误的原因。我尝试了许多代理配置(我尝试了package.json文件中的代理配置,我尝试了基于http-proxy-middlewaregithub 页面的其他一些可能的配置)。

http-proxy-middleware我发现and有一些问题react-scripts

经过一番调查,问题似乎来自sockjs-nodeWebpack 使用。它看起来像sockjs-node捕获请求并将我的后端响应替换为错误 400 响应。

有谁知道如何使 websockets 在开发中的反应应用程序中与代理一起工作?

0 投票
1 回答
3821 浏览

reactjs - 如何在 React Native 中设置代理?

在 react 应用程序中,创建一个 setupProxy.js 文件并将以下内容放入其中:

但是当我做同样的事情并将这个相同的文件放在反应本机目录中时,代理不起作用并且我从客户端收到网络错误。如何在本机反应中设置代理以与服务器连接?

- - 编辑 - -

我尝试执行以下操作:

但这没有奏效。

0 投票
1 回答
5165 浏览

node.js - http-proxy-middleware + express + node.js - 无法重定向到启用客户端证书身份验证的端点

我正在使用 http-proxy-middleware ( https://www.npmjs.com/package/http-proxy-middleware ) 来实现另一个 REST API 的代理,该 API 启用了基于客户端证书的身份验证 (requestCert: true,拒绝未授权:真)。

客户端调用代理 API ( https://localhost:3000/auth ) 其中配置了 http-proxy-middleware 并且应该将其代理到另一个具有客户端的 REST API ( https://localhost:3002/auth )启用了基于侧证书的身份验证(requestCert:true,rejectUnauthorized:true)。

我不希望在代理上发生任何特定的身份验证。当我使用基于客户端证书的身份验证路由到此目标端点的路径调用代理时,它失败并显示错误消息:

在代理服务器中收到错误:

客户端收到错误:

我不需要代理以任何方式验证/处理传入请求附带的客户端证书(我为此设置了安全:false),而只是将其转发到目标端点。我们看到从客户端收到的证书没有被传递/代理/转发到目标端点,因此基于证书的身份验证在目标端点上失败。

客户端请求直接发送到目标端点时有效,但通过 http-proxy-middleware 代理发送时无效。

我的测试服务器,客户端代码如下供参考。

是否有某种方法可以配置 http-proxy-middleware 以便它将从客户端接收到的客户端证书转发/代理到目标端点,以便客户端发送的客户端证书可用于基于证书的验证在目标 REST 端点上?

您能否指导我如何使用 http-proxy-middleware 包或任何其他合适的方式来做到这一点?提前致谢。

服务器代码

客户代码

0 投票
1 回答
866 浏览

node.js - POST http://localhost:3000/api/sendMail 404(未找到)

我正在使用 http-proxy-middleware 将表单数据从 React 前端发送到 Express 服务器,
http-proxy-middleware似乎不起作用。
它应该代理到localhost://5000.
而是引发错误:

POST http://localhost:3000/api/sendMail 404(未找到)。

前端代码:

setupProxy.js:

服务器.js:

0 投票
0 回答
902 浏览

node.js - http-proxy(反向代理)服务器随机挂断

问题:当我在此日志(内存)之后发送请求时,它显示“套接字挂起(connResetException)”错误。NodeJS 服务器停止工作。

架构:http-proxy用作反向代理。它启用 SSO(单点登录)并将其流量发送到应用程序。

代理服务器中的错误日志(仅在生产中发生 - 更多流量)

由于套接字挂起发生在许多情况下,我研究并尝试了各种情况。而且我认为我的节点的内存泄漏问题可能是问题所在。 每个请求的node --trace_gc src/index.js命令打印 2~3秒。allocation failure

奇怪的日志

源代码

问题: [http-proxy expressjs]随机挂断。它通常工作两天,服务器出现 502 错误。我需要手动重启容器来恢复它。

欢迎任何想法......请帮助

0 投票
1 回答
223 浏览

javascript - 如何向动态目标、远程未启用 cors 的 url 发出 fetch 请求?在 http-proxy-middleware 中,可以在目标中使用变量吗?

我使用 fetch('htp://list-of-servers') 返回一个 url 列表

  • test1.example.com
  • test3.example.com
  • test5.example.com

然后我需要对这些网址中的每一个执行一次 fetch(): fetch('test1.example.com').then(...)

  • a) url 未启用 cors (所以我尝试在 setupProxy 中添加它们)
  • b)我事先不知道这些 url(因为它们是较早获取的结果,所以我不确定如何将它们添加到 setupProxy.js。我基本上需要某种相当于 curl 的东西,可以请求任何非 cors 远程 url,但在 js/react/node.js 中。

建议?

0 投票
0 回答
1691 浏览

node.js - 尝试使用错误密码登录后尝试将请求 /api/users/login 从 localhost:3000 代理到 http://localhost:5000/ 时出错

我在本地运行 MERN 应用程序,并且每当我尝试使用错误密码登录时都会收到错误消息。我可以使用正确的凭据登录而不会出现任何错误。

这是我的客户端 package.json文件:

setupProxy.js文件里面:

服务器 package.json文件:

服务器 *index.js文件:

最后是错误消息的打印:

0 投票
2 回答
629 浏览

html - 使用 http-proxy-middleware 时,表单参数不会传递给 express 应用程序

这是一个非常具体的问题,可能很难描述/理解。我不知道你需要多少输入,所以我将首先描述我的整个架构:我目前正在编写我的第一个微服务架构,我使用 nodejs、express 框架、ui 的把手和 http-proxy-middleware 来创建网络。

每个服务都从一个随机端口开始。然后服务在 api-gateway 注册。api-gateway 将“/api/web/[service]/[rest]”之类的 url 路由到“localhost:[serviceport]/[rest]”(这意味着 webapi-gateway 将 /[rest] 请求路由到服务在注册的服务端口上”。为了在普通端口 80 上运行整个前端,我创建了一个代理,它将所有以“/api”开头的请求路由到之前定义的网关。对于这两个重定向,我都使用 http-代理中间件:

我不需要对该代码的评论,只是为了更好地理解。总而言之:它有效。

我正在使用 Insomnia REST 客户端来测试系统。我有一个身份验证服务,用于对用户进行身份验证。我可以通过正文参数传递发布请求“localhost/api/web/auth/login”

我收到了 200 条回复,表示它有效。

现在我的问题是:我创建了一个显示表单的前端:

当我发布表单时,身份验证服务收到请求,但请求正文为空。为什么使用网站时请求正文为空,而我使用 REST 客户端时它可以工作?