【问题标题】:When an HTTP POST is redirected to GET, what happens to the body of the POST?当 HTTP POST 被重定向到 GET 时,POST 的正文会发生什么情况?
【发布时间】:2011-02-15 18:49:22
【问题描述】:

根据我之前的question,我需要将 HTTP POST 请求重定向到不同的服务器。我相信这可以使用来自 php 的 HTTP 响应标头来完成,但我知道 POST 请求将成为 GET 请求。我的问题是 HTTP 请求的正文会发生什么?它是被丢弃了,还是会被转换为 GET 请求的查询 url 的一部分?

即如果对http://mysite.com/handler.php 进行了POST,并且我重定向到http://othersite.com/handler.php,它将自动变为http://othersite.com/handler.php?param1=hello&param2=world

【问题讨论】:

    标签: php http post redirect get


    【解决方案1】:

    POST 数据消失。除非重定向脚本采取措施将 POST 数据推送到 GET 的 URL 或 cookie 中,否则数据已经死了。

    这在某种程度上是设计使然。大多数浏览器都会限制 URL 的长度,而 POST 实际上对要发布的数据的大小没有限制,因此您不希望将刚刚上传的 500 兆字节的文件附加到 GET url 的查询行中。

    【讨论】:

      【解决方案2】:

      如果您使用 CURL 来重定向这样的请求,它会被视为与原始请求完全无关的独特的新 HTTP 请求。唯一传递的数据是您在查询字符串中显式传递的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-10
        • 2021-06-05
        • 1970-01-01
        • 2016-01-17
        • 2021-10-29
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        相关资源
        最近更新 更多