Відповіді:
Є кілька рішень залежно від того, що вам потрібно ...
Якщо ви хочете додати спеціальний заголовок (або набір заголовків) до індивідуального запиту, просто додайте 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
ви можете визначити лише один набір заголовків за замовчуванням, а ви можете визначити лише один beforeSend
. Якщо ви зателефонували ajaxSetup
кілька разів, буде надісланий лише останній набір заголовків, і буде виконано лише останній зворотний виклик перед відправленням.
beforeSend
зворотний дзвінок. Якщо ви дзвоните $.ajaxSetup({ beforeSend: func... })
двічі, то другий зворотний виклик буде єдиним, хто спрацьовує.
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*
функції b / c, вони не залежать від jQuery, а замість цього використовують XHR, тому це єдиний вірний варіант у цих випадках.
Ви також можете це зробити, не використовуючи jQuery. Замініть метод відправлення XMLHttpRequest і додайте туди заголовок:
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;
Вам слід уникати використання, $.ajaxSetup()
як описано в документах . Замість цього використовуйте наступне:
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
jqXHR.setRequestHeader('my-custom-header', 'my-value');
});
Якщо припустити, що ви маєте на увазі "Під час використання ajax" та " Заголовок HTTP Request ", то використовуйте headers
властивість в об'єкті, якому ви передаєтеajax()
заголовки (додано 1,5)
За замовчуванням:
{}
Карта додаткових пар заголовків / значень, що надсилаються разом із запитом. Цей параметр встановлюється до виклику функції beforeSend; тому будь-які значення в налаштуваннях заголовків можуть бути перезаписані в межах функції beforeSend.
Необхідно використовувати метод "setRequestHeader" об'єкта XMLHttpRequest
Ви можете використовувати js fetch
beforeSend
під час виконання$.ajax
?