Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome_frame/urlmon_url_request.h" | 5 #include "chrome_frame/urlmon_url_request.h" |
| 6 | 6 |
| 7 #include <wininet.h> | 7 #include <wininet.h> |
| 8 | 8 |
| 9 #include "base/scoped_ptr.h" | 9 #include "base/scoped_ptr.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 ULONG status_code, LPCWSTR status_text) { | 161 ULONG status_code, LPCWSTR status_text) { |
| 162 switch (status_code) { | 162 switch (status_code) { |
| 163 case BINDSTATUS_REDIRECTING: | 163 case BINDSTATUS_REDIRECTING: |
| 164 DCHECK(status_text != NULL); | 164 DCHECK(status_text != NULL); |
| 165 DLOG(INFO) << "URL: " << url() << " redirected to " | 165 DLOG(INFO) << "URL: " << url() << " redirected to " |
| 166 << status_text; | 166 << status_text; |
| 167 redirect_url_ = status_text; | 167 redirect_url_ = status_text; |
| 168 // Fetch the redirect status as they aren't all equal (307 in particular | 168 // Fetch the redirect status as they aren't all equal (307 in particular |
| 169 // retains the HTTP request verb). | 169 // retains the HTTP request verb). |
| 170 redirect_status_ = GetHttpResponseStatus(); | 170 redirect_status_ = GetHttpResponseStatus(); |
| 171 // NOTE: Even though RFC 2616 says to preserve the request method when | |
| 172 // following a 302 redirect, normal browsers don't do that. Instead they | |
| 173 // all convert a POST into a GET in response to a 302 and so shall we. | |
| 174 // For 307 redirects, browsers preserve the method. The RFC says to | |
| 175 // prompt the user to confirm the generation of a new POST request, but | |
| 176 // IE omits this prompt and so shall we. | |
|
amit
2009/10/27 17:53:57
Does chrome do this as well?
ananta
2009/10/27 18:04:35
yes,
| |
| 177 if (redirect_status_ != 307 && | |
| 178 LowerCaseEqualsASCII(method(), "post")) { | |
| 179 set_method("get"); | |
| 180 post_data_len_ = 0; | |
| 181 } | |
| 171 break; | 182 break; |
| 172 | 183 |
| 173 default: | 184 default: |
| 174 DLOG(INFO) << " Obj: " << std::hex << this << " OnProgress(" << url() | 185 DLOG(INFO) << " Obj: " << std::hex << this << " OnProgress(" << url() |
| 175 << StringPrintf(L") code: %i status: %ls", status_code, status_text); | 186 << StringPrintf(L") code: %i status: %ls", status_code, status_text); |
| 176 break; | 187 break; |
| 177 } | 188 } |
| 178 | 189 |
| 179 return S_OK; | 190 return S_OK; |
| 180 } | 191 } |
| (...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 802 ret = net::ERR_ACCESS_DENIED; | 813 ret = net::ERR_ACCESS_DENIED; |
| 803 break; | 814 break; |
| 804 | 815 |
| 805 default: | 816 default: |
| 806 DLOG(WARNING) | 817 DLOG(WARNING) |
| 807 << StringPrintf("TODO: translate HRESULT 0x%08X to net::Error", hr); | 818 << StringPrintf("TODO: translate HRESULT 0x%08X to net::Error", hr); |
| 808 break; | 819 break; |
| 809 } | 820 } |
| 810 return ret; | 821 return ret; |
| 811 } | 822 } |
| OLD | NEW |