Chrome/webkitを使用したアクセス制御コントロールオリジンのデバッグ

StackOverflow https://stackoverflow.com/questions/4753970

質問

私は使用しようとしています クロスオリジンリソース共有 Access-Control-Allow-Originおよび関連するヘッダー。 Firefoxで作業していますが、Chromeは私に許可エラーを与えています。

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

ネットワークインスペクターには、リクエストが表示されますが、応答はありません(オプションのプリフライトリクエストと応答は含まれていません)。 Curlを使用してリクエスト出力を検査し、すべてのヘッダーを再現しました。私はこれをさらにデバッグする方法を失っています - クロムが通常提供するものよりも低いレベルでネットワークアクティビティを見るためのトリックはありますか? ChromeがCORSのリクエストをどのように解釈するかについての情報は、Firefoxとは異なりますか?

役に立ちましたか?

解決

あなたが見ているのは、バグによるクロムのリクエストに失敗したプレフィライトであると思います。それは、物事がFirefoxで機能するが、Chromeでは機能しない理由を説明するでしょう。

リクエストにカスタムヘッダーを送信していますか? WebKitには、カスタムヘッダーを使用してGet Requestが失敗するバグがあります(バグはこちら: http://code.google.com/p/chromium/issues/detail?id=57836)。また、Chromeは、コンテンツタイプがシンプルなヘッダーであるにもかかわらず、Access-Control-Allow-Headersリストにコンテンツタイプのヘッダーを期待することがあることに気付きました。

また、ネットワークインスペクターにはオプションのプレイライトが含まれていないことに言及しますか?どのネットワークインスペクターを使用していますか? Wiresharkを使用することをお勧めします。これにより、Chromeの検査官が提供していない実際のネットワークトラフィックの詳細が表示されるためです(たとえば、Wiresharkはプリフライトリクエストを記録します)。

他のいくつかのデバッグのヒント:

Safariでリクエストを試してみてください。これは、クロムバグまたはWebKitバグに絞り込むのに役立ちます。

あなたが見ているエラーを見た時代(Wiresharkはリクエストを表示しますが、応答ではありません)、それは私のサーバーにアクセス制御コントロールオリジンヘッダーが含まれていないためです。 T Origin Headerの送信(上記のバグを参照)。ネットワークトレースには、リクエストにオリジンヘッダーが表示されますか?サーバーを制御していますか?もしそうなら、Origin Headerを受け取りますか?

詳細については、実際の問題をデバッグするのは難しいです。まだ問題がある場合は、ここにリクエスト/応答ヘッダーを投稿できますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top