Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Unified Diff: third_party/WebKit/Source/modules/fetch/FetchManager.cpp

Issue 2785123002: Make no-location redirect response to be "opaque redirect" when redirect mode is manual. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/fetch/FetchManager.cpp
diff --git a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp
index 37ad99a8621ae4bf4cc5cddb74b97db9a3f11748..3d755b6efc711659a3d9cd28a788c5758945aa71 100644
--- a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp
+++ b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp
@@ -448,26 +448,14 @@ void FetchManager::Loader::didReceiveResponse(
FetchResponseData* taintedResponse = nullptr;
- if (NetworkUtils::isRedirectResponseCode(m_responseHttpStatusCode)) {
- Vector<String> locations;
- responseData->headerList()->getAll(HTTPNames::Location, locations);
- if (locations.size() > 1) {
- performNetworkError("Multiple Location header.");
- return;
- }
- if (locations.size() == 1) {
- KURL locationURL(m_request->url(), locations[0]);
- if (!locationURL.isValid()) {
- performNetworkError("Invalid Location header.");
- return;
- }
- ASSERT(m_request->redirect() == WebURLRequest::FetchRedirectModeManual);
- taintedResponse = responseData->createOpaqueRedirectFilteredResponse();
- }
- // When the location header doesn't exist, we don't treat the response
- // as a redirect response, and execute tainting.
- }
- if (!taintedResponse) {
+ DCHECK(!(NetworkUtils::isRedirectResponseCode(m_responseHttpStatusCode) &&
+ responseData->headerList()->has(HTTPNames::Location) &&
+ m_request->redirect() != WebURLRequest::FetchRedirectModeManual));
+
+ if (NetworkUtils::isRedirectResponseCode(m_responseHttpStatusCode) &&
+ m_request->redirect() == WebURLRequest::FetchRedirectModeManual) {
+ taintedResponse = responseData->createOpaqueRedirectFilteredResponse();
+ } else {
switch (tainting) {
case FetchRequestData::BasicTainting:
taintedResponse = responseData->createBasicFilteredResponse();

Powered by Google App Engine
This is Rietveld 408576698