OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2003, 2006 Apple Computer, Inc. All rights reserved. |
3 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
11 * notice, this list of conditions and the following disclaimer in the | 11 * notice, this list of conditions and the following disclaimer in the |
12 * documentation and/or other materials provided with the distribution. | 12 * documentation and/or other materials provided with the distribution. |
13 * | 13 * |
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #include "config.h" | 27 #include "config.h" |
28 #include "platform/network/ResourceRequest.h" | 28 #include "platform/network/ResourceRequest.h" |
| 29 #include "platform/weborigin/SecurityOrigin.h" |
29 | 30 |
30 namespace WebCore { | 31 namespace WebCore { |
31 | 32 |
32 double ResourceRequest::s_defaultTimeoutInterval = INT_MAX; | 33 double ResourceRequest::s_defaultTimeoutInterval = INT_MAX; |
33 | 34 |
34 PassOwnPtr<ResourceRequest> ResourceRequest::adopt(PassOwnPtr<CrossThreadResourc
eRequestData> data) | 35 PassOwnPtr<ResourceRequest> ResourceRequest::adopt(PassOwnPtr<CrossThreadResourc
eRequestData> data) |
35 { | 36 { |
36 OwnPtr<ResourceRequest> request = adoptPtr(new ResourceRequest()); | 37 OwnPtr<ResourceRequest> request = adoptPtr(new ResourceRequest()); |
37 request->setURL(data->m_url); | 38 request->setURL(data->m_url); |
38 request->setCachePolicy(data->m_cachePolicy); | 39 request->setCachePolicy(data->m_cachePolicy); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 { | 186 { |
186 m_httpHeaderFields.remove("Referer"); | 187 m_httpHeaderFields.remove("Referer"); |
187 m_referrerPolicy = ReferrerPolicyDefault; | 188 m_referrerPolicy = ReferrerPolicyDefault; |
188 } | 189 } |
189 | 190 |
190 void ResourceRequest::clearHTTPOrigin() | 191 void ResourceRequest::clearHTTPOrigin() |
191 { | 192 { |
192 m_httpHeaderFields.remove("Origin"); | 193 m_httpHeaderFields.remove("Origin"); |
193 } | 194 } |
194 | 195 |
| 196 void ResourceRequest::addHTTPOriginIfNeeded(const AtomicString& origin) |
| 197 { |
| 198 if (!httpOrigin().isEmpty()) |
| 199 return; // Request already has an Origin header. |
| 200 |
| 201 // Don't send an Origin header for GET or HEAD to avoid privacy issues. |
| 202 // For example, if an intranet page has a hyperlink to an external web |
| 203 // site, we don't want to include the Origin of the request because it |
| 204 // will leak the internal host name. Similar privacy concerns have lead |
| 205 // to the widespread suppression of the Referer header at the network |
| 206 // layer. |
| 207 if (httpMethod() == "GET" || httpMethod() == "HEAD") |
| 208 return; |
| 209 |
| 210 // For non-GET and non-HEAD methods, always send an Origin header so the |
| 211 // server knows we support this feature. |
| 212 |
| 213 if (origin.isEmpty()) { |
| 214 // If we don't know what origin header to attach, we attach the value |
| 215 // for an empty origin. |
| 216 setHTTPOrigin(SecurityOrigin::createUnique()->toAtomicString()); |
| 217 return; |
| 218 } |
| 219 setHTTPOrigin(origin); |
| 220 } |
| 221 |
195 void ResourceRequest::clearHTTPUserAgent() | 222 void ResourceRequest::clearHTTPUserAgent() |
196 { | 223 { |
197 m_httpHeaderFields.remove("User-Agent"); | 224 m_httpHeaderFields.remove("User-Agent"); |
198 } | 225 } |
199 | 226 |
200 FormData* ResourceRequest::httpBody() const | 227 FormData* ResourceRequest::httpBody() const |
201 { | 228 { |
202 return m_httpBody.get(); | 229 return m_httpBody.get(); |
203 } | 230 } |
204 | 231 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 // This is used by the loader to control the number of issued parallel load requ
ests. | 404 // This is used by the loader to control the number of issued parallel load requ
ests. |
378 unsigned initializeMaximumHTTPConnectionCountPerHost() | 405 unsigned initializeMaximumHTTPConnectionCountPerHost() |
379 { | 406 { |
380 // The chromium network stack already handles limiting the number of | 407 // The chromium network stack already handles limiting the number of |
381 // parallel requests per host, so there's no need to do it here. Therefore, | 408 // parallel requests per host, so there's no need to do it here. Therefore, |
382 // this is set to a high value that should never be hit in practice. | 409 // this is set to a high value that should never be hit in practice. |
383 return 10000; | 410 return 10000; |
384 } | 411 } |
385 | 412 |
386 } | 413 } |
OLD | NEW |