4

したがって、 Exchange 自動検出に関する以前の質問を振り返ってみると、自動検出 URL を取得する最も簡単な方法は、セキュリティで保護されておらず、認証されていないGET要求をサーバーに送信することであることがわかります。

http://autodiscover.exchangeserver.org/autodiscover/autodiscover.xml

Locationサーバーは、ヘッダーに正しい URL を含む 302 リダイレクトで応答します。

最初は、Chrome 拡張機能を使用して非常に単純なことを試しています。

if (req.readyState==4 && req.status==302) {
    return req.getResponseHeader("Location");
}

完全な XML Post とユーザー資格情報を使用して別の ajax 呼び出しを設定すると、

しかし代わりに、Chrome はこの時点でハングし、開発者パネルを見ると、応答が返されず、代わりに応答がなかったように動作していることがわかります。

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

エラーログに。

私の見方では、正確な応答ステータスを参照することはそれを「キャッチする」こととほぼ同じですが、問題がChrome/WebKitにあるのか、それともXHRリクエストが常にリダイレクトを処理する方法なのかはわかりません.

応答からヘッダーを取得できるように、これをキャッチする方法がわかりません。

または、302 を取得したときにまったく別のリクエストを送信するようにセカンダリ XHR を設定することは可能でしょうか?

クイックアップデート

応答コードをチェックしないように変更しました。

if (req.readyState==4) {
    return req.getResponseHeader("Location");
}

代わりに、値を警告すると、それはnull. それでも同じエラーが発生し、開発コンソールに応答がありません。SO 302 応答を応答として追跡していないように見えますか、それともその応答を一掃した後に何かが起こりますか?

4

1 に答える 1

3

xhr の w3c ドキュメントを参照してください。XHRは、リダイレクトの宛先が元のリクエストと同じオリジンにあるかどうかに応じて、透過的にリダイレクトに従うか、ネットワーク エラーを返します (Chrome で表示されているように)。したがって、コードが 302 応答をキャッチする機会はまったくありません。そのため、"Location" 応答ヘッダーが設定されていません。この時点では、302 応答ではなく、最終応答のヘッダーを調べています。

于 2010-05-05T04:04:26.490 に答える