ホームページ > ウェブフロントエンド > jsチュートリアル > フライト前チェックをトリガーせずに、AJAX POST リクエストにカスタム ヘッダーを含めるにはどうすればよいですか?

フライト前チェックをトリガーせずに、AJAX POST リクエストにカスタム ヘッダーを含めるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-07 19:08:02
オリジナル
538 人が閲覧しました

How do I include custom headers in an AJAX POST request without triggering a pre-flight check?

アクセス制御リクエスト ヘッダー: プリフライト チェックについて

jQuery を使用して AJAX POST リクエストを作成する場合、リクエストの動作を制御するカスタム ヘッダーを含めることができます。 。ただし、クロスオリジン リクエストにおけるアクセス制御リクエスト ヘッダー (CORS) の役割を理解することが重要です。

デフォルトでは、jQuery はプレフライト チェックを開始するための OPTIONS リクエストをクロスオリジン リクエストの前に置きます。 。このチェックにより、サーバーが元のリクエストに含まれる特定の HTTP メソッドとヘッダーを許可していることが確認されます。このプリフライト チェック中に、jQuery は Access-Control-Request-Headers ヘッダーをリクエストに自動的に追加します。これは、元のリクエストに存在するカスタム ヘッダーを指定します。

提供された例では、

$.ajax({
    ...
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    ...
})
ログイン後にコピー

リクエスト パラメーターには 2 つのカスタム ヘッダーが含まれています。プリフライト チェックが開始されると、ブラウザはリクエスト ヘッダーを次のように自動的に変更します:

...
Access-Control-Request-Headers: My-First-Header,My-Second-Header
...
ログイン後にコピー

これにより、サーバーは実際の POST リクエストに含まれるカスタム ヘッダーを認識できるようになります。ただし、カスタム ヘッダー自体はプリフライト チェック リクエストには存在しません。

実際の POST リクエストにカスタム ヘッダーを含めるには、次のように beforeSend 関数を使用できます。

$.ajax({
    ...
    beforeSend: function(xhr) {
        xhr.setRequestHeader("My-First-Header", "first value");
        xhr.setRequestHeader("My-Second-Header", "second value");
    }
    ...
})
ログイン後にコピー

この場合、カスタム ヘッダーは、プリフライト チェックをトリガーせずに、POST リクエストに直接含まれます。クロスオリジンリクエストの場合、サーバーは Access-Control-Allow-Headers 応答ヘッダーで指定されたヘッダーを明示的に許可する必要があることに注意してください。

以上がフライト前チェックをトリガーせずに、AJAX POST リクエストにカスタム ヘッダーを含めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート