3

CORS POST リクエストをサーバーに送信しようとしています。

Chrome では、これは期待どおりに機能します。OPTIONS プリフライト リクエストがサーバーに送信され、サーバーがアクセス コントロール ヘッダーで応答し、POST リクエストが送信されます。IE または Firefox でこれを実行しようとすると、OPTIONS 要求でリファラーが送信されないため、access-control-allow-origin ヘッダーを追加できません (これはプログラムで行われるため)。

Javascript は次のとおりです。

    $.ajax({
        url: $(this).attr('href'),
        type: 'POST',
        xhrFields: {
            withCredentials: true,
        },
        contentType: 'application/json; charset=utf-8;',
        data: JSON.stringify(data),
        success: function (response) {
            alert(response);
        },
    });
    return false;
});

Chrome のヘッダーは次のとおりです。 Chrome ヘッダー

Firefox のヘッダーは次のとおりです。 Firefox ヘッダー

リファラーが OPTIONS プリフライト リクエストで送信されることを保証する方法はありますか? そうでない場合 - 参照元の URL を取得して allow origin ヘッダーを追加できる別の方法はありますか?

4

1 に答える 1

2

プリフライト リクエストと一緒に送信される Origin ヘッダーを使用することで、この問題を解決しました。したがって、Origin URL が受け入れ可能なホストの 1 つである場合は、元の URL を含む access-control-allow-origin ヘッダーを追加します。

于 2015-08-24T14:41:48.160 に答える