Risposte:
Esistono diverse soluzioni a seconda di ciò di cui hai bisogno ...
Se vuoi aggiungere un'intestazione personalizzata (o un set di intestazioni) a una singola richiesta, aggiungi semplicemente la headers
proprietà:
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
Se si desidera aggiungere un'intestazione predefinita (o un set di intestazioni) a ogni richiesta, utilizzare $.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' } });
Se vuoi aggiungere un'intestazione (o un set di intestazioni) a ogni richiesta, usa l' beforeSend
hook con $.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' } });
Modifica (ulteriori informazioni): una cosa da tenere presente è che con ajaxSetup
te puoi definire solo un set di intestazioni predefinite e puoi definirne solo uno beforeSend
. Se si chiama ajaxSetup
più volte, verrà inviato solo l'ultimo set di intestazioni e verrà eseguita solo l'ultima richiamata prima dell'invio .
beforeSend
callback. Se si chiama $.ajaxSetup({ beforeSend: func... })
due volte, il secondo callback sarà l'unico che si attiva.
ajaxSetup
.
Oppure, se si desidera inviare l'intestazione personalizzata per ogni richiesta futura, è possibile utilizzare quanto segue:
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
In questo modo ogni futura richiesta Ajax conterrà l'intestazione personalizzata, a meno che non sia esplicitamente sovrascritta dalle opzioni della richiesta. Puoi trovare maggiori informazioni ajaxSetup
qui
Ecco un esempio usando 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++;
};
Spero che aiuti.
Se si crea l'oggetto, è possibile utilizzare la funzione setRequestHeader per assegnare un nome e un valore prima di inviare la richiesta.
$.ajax*
funzioni b / c, non dipendono da jQuery e invece usano XHR, quindi questa è l'unica opzione valida in quei casi.
Puoi anche farlo senza usare jQuery. Sostituisci il metodo di invio XMLHttpRequest e aggiungi l'intestazione lì:
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;
Supponendo che intendi "Quando si utilizza ajax" e " Un'intestazione di richiesta HTTP ", utilizzare la headers
proprietà nell'oggetto a cui si passaajax()
intestazioni (aggiunto 1.5)
Predefinito:
{}
Una mappa di coppie chiave / valore dell'intestazione aggiuntive da inviare insieme alla richiesta. Questa impostazione è impostata prima che venga chiamata la funzione beforeSend; pertanto, qualsiasi valore nell'impostazione delle intestazioni può essere sovrascritto dalla funzione beforeSend.
È necessario utilizzare il metodo "setRequestHeader" dell'oggetto XMLHttpRequest
Puoi usare js fetch
beforeSend
quando faccio un$.ajax
?