2017-04-19 3 views
-1

Je souhaite récupérer les en-têtes de réponse envoyés par le serveur. Mais je reçois un objet vide. Je peux voir les en-têtes de réponse dans les outils de développement de chrome, mais je ne peux pas les obtenir de javascript.Comment obtenir les en-têtes de réponse à partir d'une requête ajax

(je me sers isomorphe-fetch lib pour les requêtes XHR.)

 fetch("http://my.cors.url/postsomedata", { 
      method: 'POST', 
      headers: { 
       Accept: 'application/json', 
       'Content-Type': 'application/json', 
      }, 
      body: JSON.stringify(myjsobject), 
     }) 
     .then(response => response.headers) 
     .then((headers) => { 
      console.log(headers); // empty object 
     }) 

Ce n'est pas de doublon How to get Response headers in AJAX Je ne suis pas en utilisant jQuery.

+0

double possible de [Comment obtenir les en-têtes de réponse en AJAX] (http: // stackoverflow.com/questions/34429628/how-to-get-response-headers-in-ajax) –

+1

Si vous ne pouvez pas l'obtenir à partir de 'response.headers', vous ne pouvez pas l'obtenir. Cela sent comme un problème de CORS. –

+0

@KevinB, mais pourquoi je peux les voir dans les outils de développement chrome? – Vovan

Répondre

0

Le problème résidait dans la configuration CORS du serveur principal. J'utilise botte de printemps, donc pour faire passer en-têtes personnalisés en réponse XHR i besoin de configurer l'application de démarrage de printemps manière suivante

@Bean 
public WebMvcConfigurer corsConfigurer() { 
    return new WebMvcConfigurerAdapter() { 
     @Override 
     public void addCorsMappings(CorsRegistry registry) { 
      registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") 
        .exposedHeaders("MyHeader"); 
     } 
    }; 
}