Amazon web services 在AWS应用程序负载平衡器中将HTTP重定向为HTTPS将POST请求转换为GET请求

Amazon web services 在AWS应用程序负载平衡器中将HTTP重定向为HTTPS将POST请求转换为GET请求,amazon-web-services,aws-application-load-balancer,Amazon Web Services,Aws Application Load Balancer,我使用AWS中的应用程序负载平衡器作为API网关:用于将请求转发到AWS中运行的不同应用程序。我已经将其配置为同时支持HTTP和HTTPS。HTTPS侦听器包含请求转发的所有逻辑规则。HTTP侦听器配置有一个规则:将所有流量重定向到HTTPS侦听器({host}:443/{path}?{query}),并返回301 HTTPS工作得非常好。HTTP可以很好地处理GET请求。但我发现,当重定向到HTTPS时,对HTTP的POST请求被转换为GET请求,这显然以404结束 我在网上发现问题在301状

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

HTTPS工作得非常好。HTTP可以很好地处理GET请求。但我发现,当重定向到HTTPS时,对HTTP的POST请求被转换为GET请求,这显然以404结束

我在网上发现问题在301状态()。但不幸的是,AWS ALB规则中没有重定向请求和返回307而不是301的选项

有人知道我如何解决这个问题吗?
谢谢大家!

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

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

什么是您的应用程序服务器?您能否修复应用程序,使HTTP POST永远不会发生?将HTTP POST请求重定向到HTTPS有些毫无意义,因为在重定向发生时,头和POST正文已经在Internet上未加密发送。这有点像在马已经逃跑后关上谷仓的门。@Rodrigo M,我们有一些应用程序。一个在Rails上使用NGINX,另一些在ASP.NET内核中使用Kestrel。@Michael,我想你是指客户端应用程序,对吗?是的,这是正确的方法。但不幸的是,我们不能强迫所有现有用户在夜间更新他们的应用程序。@ded.diman,只要帖子主体在中,您可以使用ALB/Lambda集成来完成Rodrigo建议的操作,但不需要应用程序自己处理它。。。但我承认,我仍然有点被困在这个问题上,你是如何陷入这样一个局面的。将帖子从HTTP重定向到HTTPS不应该起作用,因为客户端在发送帖子时应该已经在说HTTPS了。感谢@Rodrigo M.ALB的想法。在我的例子中,ALB还可以作为API网关,因此它根据一组规则将请求重定向到不同的后端。我可以允许HTTP通过其中一个应用程序执行您建议的操作,然后通过HTTPS将请求转发到正确的应用程序。这只是使其中一个应用程序成为一种API网关的隐式助手的方式不是很透明。但如果我没有找到更好的解决方案,我会把它作为一个潜在的选择。