Personne ne sait comment ajouter ou d'en créer un en-tête HTTP personnalisé à l'aide de JavaScript ou jQuery?
Réponses
Trop de publicités?Il existe plusieurs solutions en fonction de ce dont vous avez besoin...
Si vous souhaitez ajouter un en-tête personnalisé ou un ensemble d'en-têtes) à une demande individuelle, puis il suffit d'ajouter l' headers
de la propriété:
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
Si vous souhaitez ajouter une valeur par défaut de l'en-tête (ou ensemble d'en-têtes) pour chaque demande ensuite utiliser $.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 ensemble d'en-têtes) pour chaque demande ensuite utiliser l' beforeSend
crochet 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' } });
Edit (plus d'info): Une chose d'être conscient de, c'est qu'avec ajaxSetup
vous ne pouvez définir qu'un ensemble d'en-têtes par défaut et vous ne pouvez définir qu'un beforeSend
. Si vous appelez ajaxSetup
plusieurs fois, seul le dernier jeu d'en-têtes seront envoyés et seul le dernier avant-envoyer rappel à exécuter.
Ou, si vous voulez envoyer l'en-tête personnalisé pour chaque demande, vous pouvez utiliser les éléments suivants:
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
De cette façon, chaque futur requête ajax va contenir l'en-tête personnalisé, sauf s'il est explicitement remplacées par les options de la demande. Vous trouverez plus d'infos sur ajaxSetup
ici
Voici un exemple d'utilisation 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++;
};
Espérons que cela aide.
Si vous créez votre objet, vous pouvez utiliser le setRequestHeader fonction pour assigner un nom et une valeur avant de vous envoyer la demande.
En supposant que vous voulez dire "Lors de l'utilisation d'ajax" et "HTTP de la Requête de l'en-tête", puis utilisez l' headers
propriété de l'objet que vous lui transmettez ajax()
les en-têtes(ajouté 1.5)
Par défaut:
{}
Une carte d'en-tête supplémentaire de paires clé/valeur à envoyer avec la demande. Ce paramètre est défini avant le beforeSend fonction est appelée; par conséquent, toutes les valeurs dans les en-têtes de réglage peut être modifié à partir de l'intérieur de la beforeSend fonction.