amazon-web-services - AWS Application Load Balancer 中将 HTTP 重定向到 HTTPS 将 POST 请求转换为 GET 请求
问题描述
我使用 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。
那么有谁知道我该如何解决这个问题?谢谢!
解决方案
我们有类似的设置。我们所做的是让 HTTP 请求通过应用程序服务器,应用程序检测 HTTP 协议并执行基于软件的 301 重定向作为 POST 到 HTTPS。这将专门的协议处理从 ALB 转移到应用程序本身。效果很好。任何应用程序服务器都可以通过这种方式轻松设置。
推荐阅读
- python - 如何在 CVXPY 中指定非线性约束?
- laravel - Laravel - :“in_array()期望参数2是数组,对象给定”在离开请求中
- java - 为什么我不能从 PriorityQueue 中删除 peek() 获取的元素?
- javascript - Wheelnav.js,默认 NavItemText 未选择
- c# - Azure 功能无法访问连接的 WCF 服务
- c++ - 如何编写 gmock 测试,使其不调用夹具类的构造函数
- python - 如何使用python cgi?
- asp.net-core - 写入响应正文时为空标题和响应正文
- nuxt.js - 如何在 NuxtJS 项目中使用 EditorJS?
- asp.net - 目标 Web 配置文件中的 XDT 转换