You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.
When using $http to connect to a server which does no react to the TCP connection attempts at all on a current Safari browser, the promise never gets settled. On other browsers it gets rejected after some time as expected.
It can be reproduced using angular 1.5.8 and the following code on Safari 9.1.2, OS X 10.11.6:
The cause seems to be that the current Safari version invokes the ontimeout handler on the XHR object in this case even though no timeout has been set on it. (https://xhr.spec.whatwg.org/#the-timeout-attribute). Attaching the ontimeout handler in addition to onerror and onabort in $httpBackend fixes the issue.
The text was updated successfully, but these errors were encountered:
When using the [timeout attribute](https://xhr.spec.whatwg.org/#the-timeout-attribute) and an XHR
request times out, browsers trigger the `timeout` event (and execute the XHR's `ontimeout`
callback). Additionally, Safari 9 handles timed-out requests in the same way, even if no `timeout`
has been explicitly set on the XHR.
In the above cases, `$httpBackend` would fail to capture the XHR's completing (with an error), so
the corresponding `$http` promise would never get fulfilled.
Fixesangular#14969
When using the [timeout attribute](https://xhr.spec.whatwg.org/#the-timeout-attribute) and an XHR
request times out, browsers trigger the `timeout` event (and execute the XHR's `ontimeout`
callback). Additionally, Safari 9 handles timed-out requests in the same way, even if no `timeout`
has been explicitly set on the XHR.
In the above cases, `$httpBackend` would fail to capture the XHR's completing (with an error), so
the corresponding `$http` promise would never get fulfilled.
Note that using `$http`'s `timeout` configuration option does **not** rely on the XHR's `timeout`
property (or its `ontimeout` callback).
Fixes#14969Closes#14972
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
When using $http to connect to a server which does no react to the TCP connection attempts at all on a current Safari browser, the promise never gets settled. On other browsers it gets rejected after some time as expected.
It can be reproduced using angular 1.5.8 and the following code on Safari 9.1.2, OS X 10.11.6:
The cause seems to be that the current Safari version invokes the ontimeout handler on the XHR object in this case even though no timeout has been set on it. (https://xhr.spec.whatwg.org/#the-timeout-attribute). Attaching the ontimeout handler in addition to onerror and onabort in $httpBackend fixes the issue.
The text was updated successfully, but these errors were encountered: