Jawaban:
Ada beberapa solusi tergantung pada apa yang Anda butuhkan ...
Jika Anda ingin menambahkan tajuk khusus (atau set tajuk) ke permintaan individual, cukup tambahkan headers
properti:
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
Jika Anda ingin menambahkan header default (atau set header) untuk setiap permintaan, gunakan $.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' } });
Jika Anda ingin menambahkan header (atau set header) untuk setiap permintaan, gunakan beforeSend
hook dengan $.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' } });
Sunting (info lebih lanjut): Satu hal yang perlu diperhatikan adalah bahwa dengan ajaxSetup
Anda hanya dapat menentukan satu set tajuk default dan Anda hanya dapat menentukan satu beforeSend
. Jika Anda menelepon ajaxSetup
beberapa kali, hanya set header terakhir yang akan dikirim dan hanya callback sebelum-kirim terakhir yang akan dieksekusi.
beforeSend
panggilan balik. Jika Anda menelepon $.ajaxSetup({ beforeSend: func... })
dua kali maka panggilan balik kedua akan menjadi satu-satunya yang menyala.
ajaxSetup
.
Atau, jika Anda ingin mengirim tajuk khusus untuk setiap permintaan di masa mendatang, maka Anda dapat menggunakan yang berikut:
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
Dengan cara ini setiap permintaan ajax di masa depan akan berisi tajuk khusus, kecuali secara eksplisit ditimpa oleh opsi permintaan. Anda dapat menemukan info lebih lanjut di ajaxSetup
sini
Berikut ini contoh menggunakan 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++;
};
Semoga itu bisa membantu.
Jika Anda membuat objek Anda, Anda bisa menggunakan fungsi setRequestHeader untuk menetapkan nama, dan nilai sebelum Anda mengirim permintaan.
$.ajax*
fungsi b / c mereka tidak bergantung pada jQuery dan sebaliknya menggunakan XHR jadi ini adalah satu-satunya pilihan yang valid dalam kasus-kasus tersebut.
Anda juga dapat melakukan ini tanpa menggunakan jQuery. Ganti metode pengiriman XMLHttpRequest dan tambahkan header di sana:
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;
Dengan asumsi yang Anda maksud "Ketika menggunakan ajax" dan " header Permintaan HTTP ", kemudian gunakan headers
properti di objek yang Anda lewatiajax()
header (ditambahkan 1,5)
Default:
{}
Peta kunci tajuk tambahan / pasangan nilai untuk dikirim bersama dengan permintaan. Pengaturan ini diatur sebelum fungsi beforeSend dipanggil; oleh karena itu, nilai apa pun dalam pengaturan tajuk dapat ditimpa dari dalam fungsi beforeSend.
Metode "setRequestHeader" objek XMLHttpRequest harus digunakan
Anda dapat menggunakan js fetch
beforeSend
ketika melakukan$.ajax
?