OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |