Comment puis-je conserver les cookies dans la réponse ?

const setContext = require('apollo-link-context');
const axios = require('axios')
const req = async () => {
const dotenv = require("dotenv")
dotenv.config()
const res = await axios.post(process.env.URL, {
email: process.env.EMAIL,
password: process.env.PASSWORD}, {
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
}, {withCredentials: true}
);
console.log(res.headers['set-cookie']);
}
req();

Est-ce que quelqu'un sait comment conserver les cookies dans la réponse ? Il y a deux cookies spécifiques dans la réponse que je souhaite enregistrer dans une variable afin de pouvoir les utiliser pour une autre requête.

J'ai essayé de lire la documentation et d'utiliser d'autres bibliothèques pour les demandes, mais rien ne fonctionne.


Solution du problème

Vous n'avez pas besoin d'enregistrer explicitement les cookies dans l'en-tête pour les utiliser dans vos requêtes ultérieures. Ils sont automatiquement stockés dans le navigateur envoyé avec les demandes ultérieures. Pour que cela se produise, vous devez toutefois définir {withCredentials: true} sur votre requête suivante et le serveur doit avoir les en-têtes de réponse avec la propriété 'ACCESS-CONTROL-ALLOW-CREDENTIALS': true. Maintenant en fonction de votre backend. serveur, vous pouvez trouver des bibliothèques d'analyse de cookies comme js-cookie. qui vous permettra de lire et de stocker facilement les cookies dans une variable. Mais si, pour une raison spécifique, vous souhaitez le définir explicitement comme en-tête dans votre demande ultérieure, vous pouvez le faire en utilisant le code ci-dessous. Cependant, gardez à l'esprit que vous ne pouvez pas lire/écrire/modifier httpOnly flaged cookies from the browser

 const cookie = require("js-cookie");
(async()=>{
const res = await axios.post(process.env.URL, {
email: process.env.EMAIL,
password: process.env.PASSWORD}, {
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
}, {withCredentials: true}
);
//assuming the server sets the cookie in its response headers during your 1st request
let mycookieValue = cookie.get("my-cookie-key");
axios.get(second-request-url,{headers:{mycookieValue}});})();

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"