453 votes

Ajouter l’en-tête dans la requête AJAX avec jQuery

Je voudrais ajouter un en-tête personnalisé pour un AJAX requête POST à partir de jQuery.

J'ai essayé ceci:

$.ajax({
    type: 'POST',
    url: url,
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    //OR
    //beforeSend: function(xhr) { 
    //  xhr.setRequestHeader("My-First-Header", "first value"); 
    //  xhr.setRequestHeader("My-Second-Header", "second value"); 
    //}
}).done(function(data) { 
    alert(data);
});

Lorsque j'envoie cette demande, et je regarde avec FireBug, je vois cet en-tête:

OPTIONS xxxx/yyyy HTTP/1.1
Host: 127.0.0.1:6666
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origine: null
Contrôle d'accès-Demande-Méthode: POST
Contrôle d'accès-Request-Headers: mon-premier-d'en-tête,mon second en-tête
Pragma: no-cache
Cache-Control: no-cache

Pourquoi mes en-têtes personnalisés aller à l' Access-Control-Request-Headers:

Contrôle d'accès-Request-Headers: mon-premier-d'en-tête,mon second en-tête

Je m'attendais à un en-tête de valeurs comme ceci:

Mon-Premier-d'en-Tête: la première valeur
Mon Second en-Tête: la seconde valeur

Est-il possible? Merci.

484voto

milkovsky Points 875

Voici un excellent exemple « Comment définir un en-tête de requête dans un appel JQuery Ajax »

140voto

karlgold Points 3636

Ce que vous avez vu dans Firefox n'a pas été à la demande réelle; à noter que la méthode HTTP qui est des OPTIONS, pas de POST. C'était en fait le "pré-vol" demande que le navigateur fait pour déterminer si un cross-domain requête AJAX devraient être autorisés:

http://www.w3.org/TR/cors/

Le Contrôle d'Accès-Request-Headers-tête dans la pré-vol de la demande inclut la liste des en-têtes de la demande réelle. Le serveur est alors censé rendre compte que ces en-têtes sont pris en charge dans ce contexte ou pas, avant que le navigateur envoie la demande réelle.

-24voto

mdnoufil Points 15

vous passez jason à en-tête dans un format incorrect. Suppression des citations de « My-First-Header » devraient être comme My-First-Header

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