如何在响应中保留cookie


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();

有人知道如何在回复中保留cookie吗?响应中有两个特定的cookie,我想保存在一个变量中,以便用于另一个请求。

我尝试过阅读文档并使用其他库来满足请求,但都不起作用。

您不必为了在后续请求中使用cookie而在标头中显式保存cookie。它们会自动存储在浏览器中,并与后续请求一起发送。然而,要做到这一点,您需要在后续请求中设置{withCredentials:true},并且服务器必须具有属性为"ACCESS-CONTROL-ALLOW-CREDENTIALS"的响应标头:true。现在取决于您的后端。服务器,您可以找到像jscookie这样的cookie解析库。这将使您能够轻松地读取cookie并将其存储在变量中。但是,如果出于某种特定原因,您想在后续请求中明确地将其设置为标头,则可以使用以下代码进行设置。但是,请记住,您无法从浏览器读取/写入/编辑httpOnly标记的cookie

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}});})();

最新更新