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
This commit is contained in:
Caitlin Potter 2014-02-04 18:34:23 -05:00
parent 5850e61c82
commit 431bad0183

View file

@ -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);