Chromium Code Reviews| 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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 151 errorDescription = buildAccessControlFailureMessage("A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true.", securityOrigin); | 151 errorDescription = buildAccessControlFailureMessage("A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true.", securityOrigin); |
| 152 return false; | 152 return false; |
| 153 } | 153 } |
| 154 } else if (allowOriginHeaderValue != securityOrigin->toAtomicString()) { | 154 } else if (allowOriginHeaderValue != securityOrigin->toAtomicString()) { |
| 155 if (allowOriginHeaderValue.isNull()) { | 155 if (allowOriginHeaderValue.isNull()) { |
| 156 errorDescription = buildAccessControlFailureMessage("No 'Access-Cont rol-Allow-Origin' header is present on the requested resource.", securityOrigin) ; | 156 errorDescription = buildAccessControlFailureMessage("No 'Access-Cont rol-Allow-Origin' header is present on the requested resource.", securityOrigin) ; |
| 157 | 157 |
| 158 if (isInterestingStatusCode(statusCode)) | 158 if (isInterestingStatusCode(statusCode)) |
| 159 errorDescription.append(" The response had HTTP status code " + String::number(statusCode) + "."); | 159 errorDescription.append(" The response had HTTP status code " + String::number(statusCode) + "."); |
| 160 | 160 |
| 161 errorDescription.append(" Alternatively, if you want an opaque respo nse, switch to The Fetch API in 'no-cors' mode."); | |
|
hiroshige
2015/08/28 08:24:23
nit: s/The Fetch API/the Fetch API/
| |
| 162 | |
| 161 return false; | 163 return false; |
| 162 } | 164 } |
| 163 | 165 |
| 164 String detail; | 166 String detail; |
| 165 if (allowOriginHeaderValue.string().find(isOriginSeparator, 0) != kNotFo und) { | 167 if (allowOriginHeaderValue.string().find(isOriginSeparator, 0) != kNotFo und) { |
| 166 detail = "The 'Access-Control-Allow-Origin' header contains multiple values '" + allowOriginHeaderValue + "', but only one is allowed."; | 168 detail = "The 'Access-Control-Allow-Origin' header contains multiple values '" + allowOriginHeaderValue + "', but only one is allowed."; |
| 167 } else { | 169 } else { |
| 168 KURL headerOrigin(KURL(), allowOriginHeaderValue); | 170 KURL headerOrigin(KURL(), allowOriginHeaderValue); |
| 169 if (!headerOrigin.isValid()) | 171 if (!headerOrigin.isValid()) |
| 170 detail = "The 'Access-Control-Allow-Origin' header contains the invalid value '" + allowOriginHeaderValue + "'."; | 172 detail = "The 'Access-Control-Allow-Origin' header contains the invalid value '" + allowOriginHeaderValue + "'."; |
| 171 else | 173 else |
| 172 detail = "The 'Access-Control-Allow-Origin' header has a value ' " + allowOriginHeaderValue + "' that is not equal to the supplied origin."; | 174 detail = "The 'Access-Control-Allow-Origin' header has a value ' " + allowOriginHeaderValue + "' that is not equal to the supplied origin."; |
| 173 } | 175 } |
| 174 errorDescription = buildAccessControlFailureMessage(detail, securityOrig in); | 176 errorDescription = buildAccessControlFailureMessage(detail, securityOrig in); |
| 177 errorDescription.append(" Either change the header, or, if you want an o paque response, use the Fetch API in 'no-cors' mode."); | |
| 175 return false; | 178 return false; |
| 176 } | 179 } |
| 177 | 180 |
| 178 if (includeCredentials == AllowStoredCredentials) { | 181 if (includeCredentials == AllowStoredCredentials) { |
| 179 const AtomicString& allowCredentialsHeaderValue = response.httpHeaderFie ld(allowCredentialsHeaderName); | 182 const AtomicString& allowCredentialsHeaderValue = response.httpHeaderFie ld(allowCredentialsHeaderName); |
| 180 if (allowCredentialsHeaderValue != "true") { | 183 if (allowCredentialsHeaderValue != "true") { |
| 181 errorDescription = buildAccessControlFailureMessage("Credentials fla g is 'true', but the 'Access-Control-Allow-Credentials' header is '" + allowCred entialsHeaderValue + "'. It must be 'true' to allow credentials.", securityOrigi n); | 184 errorDescription = buildAccessControlFailureMessage("Credentials fla g is 'true', but the 'Access-Control-Allow-Credentials' header is '" + allowCred entialsHeaderValue + "'. It must be 'true' to allow credentials.", securityOrigi n); |
| 182 return false; | 185 return false; |
| 183 } | 186 } |
| 184 } | 187 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 269 newRequest.setHTTPOrigin(securityOrigin->toAtomicString()); | 272 newRequest.setHTTPOrigin(securityOrigin->toAtomicString()); |
| 270 // If the user didn't request credentials in the first place, update our | 273 // If the user didn't request credentials in the first place, update our |
| 271 // state so we neither request them nor expect they must be allowed. | 274 // state so we neither request them nor expect they must be allowed. |
| 272 if (options.credentialsRequested == ClientDidNotRequestCredentials) | 275 if (options.credentialsRequested == ClientDidNotRequestCredentials) |
| 273 options.allowCredentials = DoNotAllowStoredCredentials; | 276 options.allowCredentials = DoNotAllowStoredCredentials; |
| 274 } | 277 } |
| 275 return true; | 278 return true; |
| 276 } | 279 } |
| 277 | 280 |
| 278 } // namespace blink | 281 } // namespace blink |
| OLD | NEW |