Obtention de tous les en-têtes de réponse de jqXHR

Sur mon serveur (écrit en Go), je vous renvoie un champ d’en-tête personnalisé que je tente de lire lorsque je passe un appel ajax.

$.ajax({ url: url, success: function(data, status, request) { console.log("Custom field: " + request.getResponseHeader('Custom-Header')); // doing stuff with data } }); 

La réponse

 HTTP/1.1 200 OK Access-Control-Allow-Origin: * Custom-Header: some,comma,separated,stuff,here Content-Type: text/csv Date: Mon, 10 Aug 2015 15:42:34 GMT Content-Length: 1379 

Cela retournera toujours null . J’ai essayé d’utiliser getResponseHeader pour les en-têtes normaux dont j’ai confirmé la présence dans le paquet de réponse, tels que Content-Length , Date et Access-Control-Allow-Origin ; ceux-ci retournent tous null aussi. Le seul en-tête qui fonctionne est Content-Type .

Si j’utilise getAllResponseHeaders() , une chaîne contenant uniquement Content-Type: text/csv .

Comment puis-je accéder à d’autres en-têtes qui ne sont pas Content-Type ? J’ai vu qu’il y avait un bug lié à cela il y a 3 ans, mais n’affectait que Firefox. J’utilise Chrome v 44.0.2403.130 (64 bits).

Vous avez Access-Control-Allow-Origin ce qui implique qu’il s’agit d’une demande d’origine croisée.

De la spécification :

La spécification de partage des ressources d’origine croisée filtre les en-têtes de réponse exposés par getAllResponseHeaders () pour les demandes d’origine croisée.

Vous devez explicitement rendre les en-têtes disponibles pour les demandes d’origine croisée avec Access-Control-Expose-Headers .

Exemple de MDN :

 Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header 

Alors:

 Access-Control-Expose-Headers: Custom-Header 

Cela dit, veuillez utiliser le préfixe X- pour vos en-têtes expérimentaux et non standard.