2

J'essaie d'obtenir les en-têtes de réponse à partir d'une demande de publication, mais l'objet HttpResponse ne contient pas les mêmes en-têtes que je peux voir dans le réseau. Qu'est-ce que je fais mal? J'ai besoin d'accéder à la valeur de la clé Apiproxy-Session-Id et il n'est pas présent dans les HttpHeaders.Obtention des en-têtes de réponse à partir de la requête HttpClient en Angular?

Ceci est mon code pour exécuter la demande de publication et enregistrer la réponse complète, où http est un objet HttpClient.

this.http.post('http://localhost:8081/user/login', JSON.stringify(requestBody), {observe: 'response'}).subscribe(resp => { console.log(resp); });

This is the response I'm logging.

These are the headers I'm seeing in the network.

Je suis nouveau angulaire et très déconcerté par cela. Merci de votre aide!

+0

Votre problème a-t-il été résolu? – theLearner

Répondre

2

Hey homme que j'avais le même problème ici. Comme votre backend et frontend sont sur des domaines différents, certains en-têtes de la réponse ne sont pas affichés par défaut.

Vous pouvez essayer deux approches différentes:

1. Proxy vos demandes sur angulaire

Avec ce proxy fera de votre backend pense que la demande est venue du domaine sabe. Voir this doc pour savoir comment le faire. Gardez à l'esprit qu'avec cette option tous les en-têtes seront exposés.

2. Exposer les en-têtes que vous voulez sur votre serveur principal

Depuis que je ne connais pas la langue de votre back-end, je ne peux pas vous dire l'étape par étape de le faire, mais je Je vais devoir faire quelque chose comme ça sur la réponse: response.add("Access-Control-Expose-Headers", "Apiproxy-Session-Id").

+0

Merci! Vraiment helpul. Cela devrait être accepté réponse – David

+0

Sure man. Heureux d'avoir pu aider. –

0

Essayez d'ajouter responseType: 'text'

this.http.post('http://localhost:8081/user/login', 
    JSON.stringify(requestBody), {observe: 'response', responseType: 'text'}).subscribe(resp => { 
     console.log(resp); 
    });