367 votes

Comment puis-je ajouter un en-tête HTTP personnalisé à la requête ajax avec le js ou jQuery?

Personne ne sait comment ajouter ou d'en créer un en-tête HTTP personnalisé à l'aide de JavaScript ou jQuery?

652voto

Prestaul Points 31986

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.

57voto

Szilard Muzsi Points 866

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

22voto

Jayendra Points 27472

En supposant ajax de JQuery, vous pouvez ajouter des en-têtes personnalisés comme -

$.ajax({
  url: url,
  beforeSend: function(xhr) {
    xhr.setRequestHeader("custom_header", "value");
  },
  success: function(data) {
  }
});

21voto

James Points 329

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.

6voto

Quentin Points 325526

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.

- http://api.jquery.com/jQuery.ajax/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X