Réponses:
Il existe plusieurs solutions en fonction de vos besoins ...
Si vous souhaitez ajouter un en-tête personnalisé (ou un ensemble d'en-têtes) à une demande individuelle, ajoutez simplement la headers
propriété:
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
Si vous souhaitez ajouter un en-tête par défaut (ou un ensemble d'en-têtes) à chaque demande, utilisez $.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' } });
Si vous souhaitez ajouter un en-tête (ou un ensemble d'en-têtes) à chaque demande, utilisez le beforeSend
hook avec $.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' } });
Modifier (plus d'informations): Une chose à savoir est qu'avec ajaxSetup
vous, vous ne pouvez définir qu'un seul ensemble d'en-têtes par défaut et vous ne pouvez en définir qu'un beforeSend
. Si vous appelez ajaxSetup
plusieurs fois, seul le dernier ensemble d'en-têtes sera envoyé et seul le dernier rappel avant envoi sera exécuté.
beforeSend
rappel. Si vous appelez $.ajaxSetup({ beforeSend: func... })
deux fois, le deuxième rappel sera le seul à se déclencher.
ajaxSetup
.
Ou, si vous souhaitez envoyer l'en-tête personnalisé pour chaque demande future, vous pouvez utiliser ce qui suit:
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
De cette façon, chaque future demande ajax contiendra l'en-tête personnalisé, à moins qu'elle ne soit explicitement remplacée par les options de la demande. Vous pouvez trouver plus d'informations ajaxSetup
ici
Voici un exemple d'utilisation de 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++;
};
J'espère que cela pourra aider.
Si vous créez votre objet, vous pouvez utiliser la fonction setRequestHeader pour attribuer un nom et une valeur avant d'envoyer la demande.
$.ajax*
fonctions b / c, elles ne dépendent pas de jQuery et utilisent plutôt XHR, c'est donc la seule option valable dans ces cas.
Vous pouvez également le faire sans utiliser jQuery. Remplacez la méthode d'envoi de XMLHttpRequest et ajoutez-y l'en-tête:
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;
Vous devez éviter l'utilisation de $.ajaxSetup()
comme décrit dans la documentation . Utilisez plutôt ce qui suit:
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
jqXHR.setRequestHeader('my-custom-header', 'my-value');
});
En supposant que vous voulez dire «lors de l'utilisation d'ajax» et «un en- tête de requête HTTP », utilisez ensuite la headers
propriété de l'objet vers lequel vous passezajax()
en-têtes (ajouté 1.5)
Défaut:
{}
Une carte des paires clé / valeur d'en-tête supplémentaires à envoyer avec la demande. Ce paramètre est défini avant l'appel de la fonction beforeSend; par conséquent, toutes les valeurs du paramètre d'en-têtes peuvent être remplacées à partir de la fonction beforeSend.
La méthode "setRequestHeader" de l'objet XMLHttpRequest doit être utilisée
Vous pouvez utiliser js fetch
beforeSend
lors de la réalisation d'un$.ajax
?