5

我使用 AWS 中的 Application Load Balancer 作为 API 网关:用于将请求转发到 AWS 中运行的不同应用程序。我已经为它配置了对 HTTP 和 HTTPS 的支持。HTTPS 侦听器包含请求转发的所有逻辑规则。HTTP 侦听器配置了一条规则:将所有流量重定向到 HTTPS 侦听器 ({host}:443/#{path}?#{query}) 并返回 301。

HTTPS 完美运行。HTTP 适用于 GET 请求。但是我发现对 HTTP 的 POST 请求在重定向到 HTTPS 时会转换为 GET 请求,这显然以 404 结束。

我在网上发现问题处于 301 状态(https://rtfm.co.ua/en/http-redirects-post-and-get-requests-and-lost-data/#The_root_cause_3xx_redirects_and_HTTP_RFC)。但不幸的是,AWS ALB 规则中没有选项可以重定向请求并返回 307 而不是 301。

那么有谁知道我该如何解决这个问题?谢谢!

4

2 回答 2

1

我们有类似的设置。我们所做的是让 HTTP 请求通过应用程序服务器,应用程序检测 HTTP 协议并执行基于软件的 301 重定向作为 POST 到 HTTPS。这将专门的协议处理从 ALB 转移到应用程序本身。效果很好。任何应用程序服务器都可以通过这种方式轻松设置。

于 2020-01-13T17:28:43.230 回答
0

当启用 http 到 https 重定向时,我也遇到了同样的问题。只需禁用自动 https 重定向并直接点击 https 路由。找不到除此之外的任何替代解决方案。

于 2021-05-08T12:24:46.057 回答