私は、jQuery.ajaxPrefilter()で登録された関数でjqXHR.setRequestHeader()を介してすべてのAjaxリクエストにカスタムXIDヘッダーを追加するシステム内にあるJSスクリプトを作成しています。setRequestHeader()によって設定されたAjaxヘッダーを削除する方法はありますか?
私のスクリプトでは、このカスタムXIDヘッダーを許可するようにAccess-Control-Allow-Headersが設定されていないサードパーティのサイトにAjaxリクエストを行う必要があります。
私が3つのオプションがありそうです:
- は、私が確認しているの$アヤックスでXIDヘッダー()のbeforeSend機能は、ajaxPrefilter()関数の後に呼び出されることを削除する方法を見つけます。
- Forgoは$ .ajax()を完全に使用し、Ajaxのものを自分で作成します。
- $ .ajax()は、カスタムXIDヘッダーを受け入れるシステムのバックエンドを指し、cURLを介してサードパーティサイトに要求を実行します。
オプション1は、最も簡単で最速のルートであるため、簡単な方法があればそれを使用することをお勧めします。ちょうどを理解することはできませんどのように。
私はこのようにそれを上書きしようとしているが、それはうまくいきませんでした:
beforeSend: function(jqXHR, settings) {
jqXHR.setRequestHeader('custom-xid-header', null);
}
任意のアイデア?
これは不可能です(残念ながら)。私はこれを克服するのは簡単だと思っていますが、jQueryによって変更する必要があります。 'jqXHR'は、実際の' XMLHttpRequest'のラッパーオブジェクトです。すべてのjQueryは、(Object'のような)余分な/カスタムのヘッダを追跡し、 'removeHeader'や' setHeader'のようなメソッドを使ってそのオブジェクトを変更する必要があります。次に、実際の要求が作成されて送信されるとき、そのオブジェクトは実際の要求にリクエストヘッダを実際に追加するために使用されます。私は実際のワークフロー/ライフサイクルに応じて内部的には可能かもしれないし、そうでないかもしれない。 – Ian
ラット、それは私が恐れていたものだ。 –
ええ、値を 'null'に設定するか、' '' 'だけで空の値を設定するように見えます...ヘッダ全体を削除しません。 jQueryに機能リクエストを送信することは悪い考えではないかもしれません。これを例として使用してください。繰り返しますが、ライフサイクルに応じて内部的には可能かもしれません。 – Ian