私はJerseyバックエンドアプリケーションでReST APIを呼び出すAngular2(2.0.1)アプリケーションを持っています。 Internet Explorer 11では、DELETE要求は正しく実行されますが、コールバックはすぐに実行されないという問題があります。 120秒後に(私はタイムアウトと思う)、コールバックが呼び出されます。ネットワークレベルでは、私は即座の応答を見ることができるので、おそらく "204 No Content"の応答の場合にのみ、問題はIEまたはAngular2 httpライブラリにあると思います。XMLHttpRequestはIE11のプロキシ経由でDELETE要求で終了しません
[編集]また、GET要求は、204のステータスの空の応答の場合にこのように動作します。
あなたが開発者向けツールで見ることができるように、要求は、いくつかの時間のために保留されている:要求が完了した120秒後
。この時間のコールバック関数が呼び出された時:これはバックエンドAPIが当社の企業プロキシ経由でアクセスされた場合にのみ発生していること
注意、およびだけIE 11に
次のように呼び出しがトリガーされます。
ここでdoDelete(id: string) {
this.http.delete(this.deleteUrl + id)
.subscribe(
data => { this.ngOnInit(); },
error => { window.alert(error) });
}
ネットワークトレース:
DELETE http://yyy.yyy.at/types/76856ad1-342c-41d0-a627-71cd02d586a8 HTTP/1.1
Accept: */*
authorization: Bearer b50cd05c-0314-4557-aa66-cf9c9f356e31
Referer: http://yyy.yyy.at/types
Accept-Language: de-AT
Origin: http://yyy.yyy.at
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Length: 0
Host: yyy.yyy.at
Proxy-Connection: Keep-Alive
Pragma: no-cache
HTTP/1.0 204 No Content
Date: Fri, 07 Oct 2016 06:54:45 GMT
Server: Apache-Coyote/1.1
Cache-Control: no-cache
Access-Control-Allow-Origin: http://yyy.yyy.at
Access-Control-Allow-Credentials: true
Set-Cookie: 9047e7349d0e3de4224ae4053da5d560=b44c49344740b5a0b58b8fdd51b15bdc; path=/; HttpOnly
X-Cache: MISS from xxx.xxx.net
X-Cache-Lookup: MISS from xxx.xxx.net:8080
X-Cache: MISS from xxx.xxx.at
X-Cache-Lookup: MISS from xxx.xxx.at:8080
Via: 1.1 PSxxx, 1.1 xxx.xxx.net:8080 (squid/2.7.STABLE9), 1.0 xxx.xxx.at:8080 (squid/2.7.STABLE9)
Connection: keep-alive
Proxy-Connection: keep-alive
私が見つけた回避策は、204の代わりに200のコードで返信し、 "Content-Length:0"を設定することです。 – Black