1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-10 11:35:07 -05:00

Dirk Manske's fix for HTTP response code 301, that now behaves more like

browsers do. Which thus *breaks* the RFC 2616...
This commit is contained in:
Daniel Stenberg 2002-04-17 07:16:49 +00:00
parent 62d205a2ec
commit 08f8917acb

View File

@ -1262,7 +1262,6 @@ CURLcode Curl_perform(struct SessionHandle *data)
*/
switch(data->info.httpcode) {
case 300: /* Multiple Choices */
case 301: /* Moved Permanently */
case 306: /* Not used */
case 307: /* Temporary Redirect */
default: /* for all unknown ones */
@ -1270,6 +1269,27 @@ CURLcode Curl_perform(struct SessionHandle *data)
* seem to be OK to POST to.
*/
break;
case 301: /* Moved Permanently */
/* (quote from RFC2616, section 10.3.2):
*
* Note: When automatically redirecting a POST request after
* receiving a 301 status code, some existing HTTP/1.0 user agents
* will erroneously change it into a GET request.
*
* ----
* Warning: Because most of importants user agents do this clear
* RFC2616 violation, many webservers expect this misbehavior. So
* these servers often answers to a POST request with an error page.
* To be sure that libcurl gets the page that most user agents
* would get, libcurl has to force GET:
*/
if( data->set.httpreq == HTTPREQ_POST
|| data->set.httpreq == HTTPREQ_POST_FORM) {
infof(data,
"Violate RFC 2616/10.3.2 and switch from POST to GET\n");
data->set.httpreq = HTTPREQ_GET;
}
break;
case 302: /* Found */
/* (From 10.3.3)