0

別のサイトからリクエストできるフィードバック ページの作成を依頼されました。

ページの表示にプログレッシブ エンハンスメントを使用しています。

jquery ダイアログを使用できる場合の ajax リクエストは次のとおりです。

    jQuery.support.cors = true;
    $.ajax({
        type: 'get',
        crossDomain: true,
        url: this.href
    }).done(function (data) {
        $dialogFeedback.html(data);
    }).error(function (jqXHR, textStatus, errorThrown) {
        $dialogFeedback.html(jqXHR.responseText || textStatus);
    });

テスト中に、応答 Access-Control-Allow-Origin HttpHeader がクライアント ドメインに設定されていない場合でも、Internet Explorer がクロス ドメイン呼び出しを許可しているように見えることに気付きました。Http origin ヘッダーが常に null であることに気付きました。

Chrome と Firefox はそれを尊重します。HTTP オリジン ヘッダーが null ではありません。

呼び出しを行っているクライアント サイトは、フィードバック サイトとは異なるポートにありますが、どちらも localhost です。別のポート番号クロスドメインと見なされることを読みました。

現時点では、Referrer Http ヘッダーから発信者/クライアント ドメインを取得する必要があり、ドメインが不明な場合は 404 を返す必要があります。

本当に私は Access-Control-Allow-Origin HttpHeader に頼ることを望んでいました!

. . . 私の質問は、なぜこれが起こっているのですか?それは実際に期待/可能性がありますか?最善の解決策は何ですか?

ありがとう

4

1 に答える 1

0

Origin ヘッダーが欠落している場合、IE によると、リクエストはクロスドメインではありません。IE は、いくつかの点で同一生成元ポリシー RFC に違反しています。まず、ポート番号を無視します。次に、IE は、信頼されたゾーンにあるドメインが同じオリジン ポリシーを適用せずに相互作用することを許可します。

于 2013-09-06T20:33:38.487 に答える