我以一种方式配置了AWS ALB,它应该将(https://example.com/api/v1/ * )的请求重定向(302)到另一个区域。但是,事实证明,AWS ALB的REDIRECT功能正在将所有http:方法(POST,PUT等)更改为GET-因此在目标服务器上,我仅收到“ GET”请求。
现在我不知道这是否是
预期行为
AWS中的错误
设置问题
谁能帮助解决难题?
我认为这是预期的行为。
您遇到的问题包括以下内容:
更改方法的不是ALB,而是您使用的客户端。
AWS ALB不支持您需要重定向POST-> POST的正确HTTP状态代码,即307。
让我详细解释一下:
AWS指出:“您可以根据需要将重定向配置为临时(HTTP 302)或永久(HTTP 301)。” [1]我不知道为什么他们将响应代码限制为仅这两个。您可能应该问一下AWS支持团队。
“在HTTP 1.1中,实际上有一个状态码(307),它指示应使用相同的方法重复该请求并发布数据。” [2]
有一个线程解释了为什么用户代理将302解释为通过GET而不是POST重定向的请求。[3]
您可以在RFC 2616的“ 10.3.3 302找到”部分中找到该规范。[4]
您也可以在curl命令的手册页的“ -L /-location”和“ --post302”下阅读有关此行为的信息。
[1] https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#redirect-actions
[2] https://softwareengineering.stackexchange.com/questions/99894/为什么-doesnt-http-have-post-redirect
[3] HTTP POST => 302重定向到GET的正确行为是什么?
[4] https://www.ietf.org/rfc/rfc2616.txt
[5] https://linux.die.net/man/1/curl