web-dev-qa-db-fra.com

Comment obtenir les en-têtes de la réponse de fetch

J'utilise fetch sur chrome Version 52.0.2743.82 (64 bits). Je veux obtenir tous les en-têtes dans la réponse. L'extrait de code suivant ne renvoie que content-type mais si vous jetez un œil à chrome dev tools, il montre de nombreux autres en-têtes de réponse. Comment obtenir d'autres en-têtes depuis fetch.

  fetch('https://httpbin.org/get')
    .then(response => {
       const headers = response.headers.entries();
       let header = headers.next();
       while (!header.done){
         console.log(headers.value);
         header = header.next();
       }
    })

J'ai essayé le polyfilling (remplaçant manuellement) l'implémentation de github. Toujours pas de chance.

21
udnisap

Vous ne pouvez pas accéder à tous les en-têtes lors de la demande de contenu interdomaine via ajax. Vous pouvez accéder à tous les en-têtes si Origin est identique.

Comme expliqué dans Spécifications W3 ici , seulement Content-Type, Last-modified, Content-Language, Cache-Control, Expires, Pragma les en-têtes sont accessibles.

Plus loin https://httpbin.org/get envoyer seulement Content-Type en-tête à partir de la liste des en-têtes accessibles, vous n'avez donc que cela.

Modifier: vous pouvez exposer les en-têtes de réponse CORS non standard en envoyant Access-Control-Expose-Headers avec les en-têtes auxquels vous voulez que le client accède sur la réponse.

44
Adnan Umer