【问题标题】:POST becomes GET after ProxyPassPOST 在 ProxyPass 之后变为 GET
【发布时间】:2020-05-23 20:03:32
【问题描述】:

我有一个 nodejs 应用程序在端口 3050 上的 docker 容器内运行。如果我允许该端口通过防火墙,那么一切正常。但是,如果我尝试 ProxyPass 它,那么该应用程序似乎收到 GET 而不是 POST。

ProxyPass / http://localhost:3050/

当我查看访问日志时,apache 将请求作为 POST 接收。但是在 expressjs 中记录 req.method 会导致 GET。我还尝试了许多其他设置

ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:3050/
ProxyPassReverse / http://localhost:3050/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

最奇怪的是,我正在代理许多其他服务,例如 gitlab 和 keycloak,没有任何问题。

这可能与 HTTP 1.1 或 HTTP 2 有关吗?还是我的 httpd 服务器设置有问题?

【问题讨论】:

    标签: node.js apache express postman


    【解决方案1】:

    我只是在使用邮递员进行测试...显然将来我也应该尝试 curl 或其他东西。原来邮递员有一个设置“使用原始 HTTP 方法重定向,而不是使用 GET 重定向的默认行为”。默认情况下关闭。我不知道浏览器是否会这样,但至少现在它似乎可以工作了

    更新: 其实连那个设定都没有。这是因为我没有在 URL 前加上 https://,因为培训课程排除了协议,因为我们没有使用安全协议。所以httpd服务器将80端口代理到443,邮递员没有正确处理它。因为我会在生产中直接点击 https,所以这应该不是问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多