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

Side by Side Diff: third_party/WebKit/Source/core/fetch/CrossOriginAccessControl.cpp

Issue 2633423003: Leave out empty-valued Access-Control-Request-Headers: on preflights. (Closed)
Patch Set: explicitly include safe headers in the (test) request Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 continue; 63 continue;
64 } 64 }
65 if (equalIgnoringCase(header.key, "referer")) { 65 if (equalIgnoringCase(header.key, "referer")) {
66 // When the request is from a Worker, referrer header was added by 66 // When the request is from a Worker, referrer header was added by
67 // WorkerThreadableLoader. But it should not be added to 67 // WorkerThreadableLoader. But it should not be added to
68 // Access-Control-Request-Headers header. 68 // Access-Control-Request-Headers header.
69 continue; 69 continue;
70 } 70 }
71 filteredHeaders.push_back(header.key.lower()); 71 filteredHeaders.push_back(header.key.lower());
72 } 72 }
73 if (!filteredHeaders.size())
74 return nullAtom;
73 75
74 // Sort header names lexicographically. 76 // Sort header names lexicographically.
75 std::sort(filteredHeaders.begin(), filteredHeaders.end(), 77 std::sort(filteredHeaders.begin(), filteredHeaders.end(),
76 WTF::codePointCompareLessThan); 78 WTF::codePointCompareLessThan);
77 StringBuilder headerBuffer; 79 StringBuilder headerBuffer;
78 for (const String& header : filteredHeaders) { 80 for (const String& header : filteredHeaders) {
79 if (!headerBuffer.isEmpty()) 81 if (!headerBuffer.isEmpty())
80 headerBuffer.append(","); 82 headerBuffer.append(",");
81 headerBuffer.append(header); 83 headerBuffer.append(header);
82 } 84 }
(...skipping 16 matching lines...) Expand all
99 AtomicString(request.httpMethod())); 101 AtomicString(request.httpMethod()));
100 preflightRequest.setPriority(request.priority()); 102 preflightRequest.setPriority(request.priority());
101 preflightRequest.setRequestContext(request.requestContext()); 103 preflightRequest.setRequestContext(request.requestContext());
102 preflightRequest.setSkipServiceWorker(WebURLRequest::SkipServiceWorker::All); 104 preflightRequest.setSkipServiceWorker(WebURLRequest::SkipServiceWorker::All);
103 105
104 if (request.isExternalRequest()) { 106 if (request.isExternalRequest()) {
105 preflightRequest.setHTTPHeaderField( 107 preflightRequest.setHTTPHeaderField(
106 HTTPNames::Access_Control_Request_External, "true"); 108 HTTPNames::Access_Control_Request_External, "true");
107 } 109 }
108 110
109 if (request.httpHeaderFields().size() > 0) { 111 AtomicString requestHeaders =
112 createAccessControlRequestHeadersHeader(request.httpHeaderFields());
113 if (requestHeaders != nullAtom) {
110 preflightRequest.setHTTPHeaderField( 114 preflightRequest.setHTTPHeaderField(
111 HTTPNames::Access_Control_Request_Headers, 115 HTTPNames::Access_Control_Request_Headers, requestHeaders);
112 createAccessControlRequestHeadersHeader(request.httpHeaderFields()));
113 } 116 }
114 117
115 return preflightRequest; 118 return preflightRequest;
116 } 119 }
117 120
118 static bool isOriginSeparator(UChar ch) { 121 static bool isOriginSeparator(UChar ch) {
119 return isASCIISpace(ch) || ch == ','; 122 return isASCIISpace(ch) || ch == ',';
120 } 123 }
121 124
122 static bool isInterestingStatusCode(int statusCode) { 125 static bool isInterestingStatusCode(int statusCode) {
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 // 533 //
531 // This is equivalent to the step 2 in 534 // This is equivalent to the step 2 in
532 // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch 535 // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch
533 if (options.credentialsRequested == ClientDidNotRequestCredentials) 536 if (options.credentialsRequested == ClientDidNotRequestCredentials)
534 options.allowCredentials = DoNotAllowStoredCredentials; 537 options.allowCredentials = DoNotAllowStoredCredentials;
535 } 538 }
536 return true; 539 return true;
537 } 540 }
538 541
539 } // namespace blink 542 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698