When an HTTP POST is redirected to GET, what happens to the body of the POST?

ⅰ亾dé卋堺 提交于 2019-12-04 05:56:37

问题


As per my previous question, I need to redirect an HTTP POST request to a different server. I believe this can be done using HTTP response headers from php, but I understand the POST request will become a GET request. My question is what happens to the body of the HTTP request? is it discarded, or will it be converted to be part of the GET request's query url?

i.e. if a POST is made to http://mysite.com/handler.php and I redirect to http://othersite.com/handler.php will it automatically become http://othersite.com/handler.php?param1=hello&param2=world


回答1:


The POST data vanishes. Unless the redirecting script takes steps to push the POST data into the GET's URL or into a cookie, the data's dead and gone.

This is somewhat by design. Most browsers limit the length of a URL, and POSTs have effectively no limit to the size of the data being POSTed, so you wouldn't want that 500megabyte file you just uploaded appended to the GET url's query line.




回答2:


If you are using CURL to redirect such a request, it is regarded as a distinct, new HTTP request that is not related to the original one at all. The only data that gets passed along is that which you explicitly pass in the query string.



来源:https://stackoverflow.com/questions/5008089/when-an-http-post-is-redirected-to-get-what-happens-to-the-body-of-the-post

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!