回答:
必要なものに応じていくつかの解決策があります...
あなたがしたい場合は、個々の要求にカスタムヘッダ(またはヘッダのセット)を追加し、その後、単に追加headers
プロパティを:
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
すべてのリクエストにデフォルトのヘッダー(またはヘッダーのセット)を追加する場合は、次を使用します$.ajaxSetup()
。
$.ajaxSetup({
headers: { 'x-my-custom-header': 'some value' }
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
すべてのリクエストにヘッダー(またはヘッダーのセット)を追加する 場合は、次のようにbeforeSend
フックを使用し$.ajaxSetup()
ます。
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('x-my-custom-header', 'some value');
}
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Sends both custom headers
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
編集(詳細):知っておくべきことのajaxSetup
1つは、デフォルトヘッダーのセットは1つしか定義できず、は1つしか定義できないことですbeforeSend
。ajaxSetup
複数回呼び出した場合、最後のヘッダーのセットのみが送信され、最後の送信前のコールバックのみが実行されます。
beforeSend
コールバックは1つだけです。$.ajaxSetup({ beforeSend: func... })
2回呼び出すと、2番目のコールバックのみが起動します。
ajaxSetup
。
または、今後のすべてのリクエストでカスタムヘッダーを送信する場合は、以下を使用できます。
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
このように、リクエストのオプションで明示的にオーバーライドされない限り、今後のすべてのajaxリクエストにはカスタムヘッダーが含まれます。あなたはここでより多くの情報を見つけることができますajaxSetup
XHR2を使用した例を次に示します。
function xhrToSend(){
// Attempt to creat the XHR2 object
var xhr;
try{
xhr = new XMLHttpRequest();
}catch (e){
try{
xhr = new XDomainRequest();
} catch (e){
try{
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}catch (e){
try{
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}catch (e){
statusField('\nYour browser is not' +
' compatible with XHR2');
}
}
}
}
xhr.open('POST', 'startStopResume.aspx', true);
xhr.setRequestHeader("chunk", numberOfBLObsSent + 1);
xhr.onreadystatechange = function (e) {
if (xhr.readyState == 4 && xhr.status == 200) {
receivedChunks++;
}
};
xhr.send(chunk);
numberOfBLObsSent++;
};
お役に立てば幸いです。
オブジェクトを作成する場合、リクエストを送信する前に、setRequestHeader関数を使用して名前と値を割り当てることができます。
$.ajax*
jQueryに依存しないb / c関数を使用せず、代わりにXHRを使用するため、これがこれらのケースで唯一の有効なオプションであることです。
jQueryを使用せずにこれを行うこともできます。XMLHttpRequestのsendメソッドをオーバーライドし、そこにヘッダーを追加します。
XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send;
var newSend = function(vData) {
this.setRequestHeader('x-my-custom-header', 'some value');
this.realSend(vData);
};
XMLHttpRequest.prototype.send = newSend;
「ajaxを使用する場合」および「HTTP リクエストヘッダー」を意味すると仮定して、次にheaders
渡すオブジェクトのプロパティを使用します。ajax()
ヘッダー(1.5を追加)
デフォルト:
{}
リクエストとともに送信する追加のヘッダーのキーと値のペアのマップ。この設定は、beforeSend関数が呼び出される前に設定されます。したがって、ヘッダー設定の値はbeforeSend関数内から上書きできます。
XMLHttpRequestオブジェクトの「setRequestHeader」メソッドを使用する必要があります
あなたはjs フェッチを使うことができます
beforeSend
行うときに新しいを定義するとどうなり$.ajax
ますか?