当HTTP POST被重定向到GET时,POST的主体会发生什么?

时间:2011-02-15 18:49:23

标签: php http post redirect get

根据我之前的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

2 个答案:

答案 0 :(得分:3)

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

这有点设计。大多数浏览器限制了URL的长度,POST对POST的数据大小实际上没有限制,因此您不希望刚刚上传的500megabyte文件附加到GET url的查询行。

答案 1 :(得分:0)

如果您使用CURL重定向此类请求,则会将其视为与原始HTTP请求完全无关的新HTTP请求。传递的唯一数据是您在查询字符串中明确传递的数据。