aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaitlin Potter2014-02-04 18:34:23 -0500
committerCaitlin Potter2014-02-04 18:46:54 -0500
commit431bad01835f0294eb159d5b08101d5904828147 (patch)
treeb8de181ae8e3e9fefd31df345124ad9b45d4f051
parent5850e61c82b203bd2cccf92d17e58a4ab6f0b134 (diff)
downloadangular.js-431bad01835f0294eb159d5b08101d5904828147.tar.bz2
fix($http): ignore xhr.responseType setter exception if value is "json"
WebKit added support for the json responseType value on 09/03/2013 https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are known to throw when setting the value "json" as the response type. Other older browsers implementing the responseType. Other browsers with infrequent update cycles may also be affected. The json responseType value can be ignored if not supported, because JSON payloads are parsed on the client-side regardless. Closes #6115 Closes #6122
-rw-r--r--src/ng/httpBackend.js17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/ng/httpBackend.js b/src/ng/httpBackend.js
index 11e1b999..842fd0cf 100644
--- a/src/ng/httpBackend.js
+++ b/src/ng/httpBackend.js
@@ -106,8 +106,21 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
xhr.withCredentials = true;
}
- if (responseType) {
- xhr.responseType = responseType;
+ if (responseType && isString(xhr.responseType)) {
+ try {
+ xhr.responseType = responseType;
+ } catch (e) {
+ // WebKit added support for the json responseType value on 09/03/2013
+ // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are
+ // known to throw when setting the value "json" as the response type. Other older
+ // browsers implementing the responseType
+ //
+ // The json response type can be ignored if not supported, because JSON payloads are
+ // parsed on the client-side regardless.
+ if (responseType !== 'json') {
+ throw e;
+ }
+ }
}
xhr.send(post || null);