gpt4 book ai didi

node.js - 使用 AXIOS (Node.js) 在请求之间保留 cookie

转载 作者:行者123 更新时间:2023-12-04 13:12:21 28 4
gpt4 key购买 nike

$ node -v v10.15.0
"axios": "^0.19.2",
我试图从响应头字段“set-cookie”中保留 cookie - 就像浏览器一样。
我曾经使用过这个模块( https://www.npmjs.com/package/request )并且有一个选项 request.defaults({jar: true}) 运行良好。
对于 axios,我要求 {withCredentials: true} 可以完成这项工作 - 但它不会。
这是一个示例代码:

axios({ url: 'https://google.com/', method: 'get', withCredentials: true })
.then((res) => {
console.log('res.headers = ', res.headers);
})
.catch((err) => {
console.log('ERROR >>>> ', err);
});

axios({ url: 'https://google.com/', method: 'get', withCredentials: true })
.then((res) => {
// console.log("res.headers = ", res.headers);
console.log('REQUEST HEADERS: ', res.request._header);
})
.catch((err) => {
console.log('ERROR >>>> ', err);
});
控制台结果如下:
res.headers = {
date: 'Tue, 08 Sep 2020 09:42:24 GMT',
expires: '-1',
'cache-control': 'private, max-age=0',
'content-type': 'text/html; charset=ISO-8859-1',
p3p: 'CP="This is not a P3P policy! See g.co/p3phelp for more info."',
server: 'gws',
'x-xss-protection': '0',
'x-frame-options': 'SAMEORIGIN',
'set-cookie': [
'1P_JAR=2020-09-08-09; expires=Thu, 08-Oct-2020 09:42:24 GMT; path=/; domain=.google.com; Secure',
'NID=204=hqIOtyoskrispJi7WvceHmix8PF_tVmV6FArMX_LwcvaFRNYzTj85TZp-MXsmOXL0STJBUX0LjsUXpuPF__yx7urLiXyxFKiFsi8RpPheqyrP4XNTwrHXqXPQVqxY0KEpO_XS9ITMVrMGJ5GBSfQB4Ii63o6x4icknqZ-1k4FA8; expires=Wed, 10-Mar-2021 09:42:24 GMT; path=/; domain=.google.com; HttpOnly',
],
'alt-svc':
'h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"',
'accept-ranges': 'none',
vary: 'Accept-Encoding',
connection: 'close',
'transfer-encoding': 'chunked',
};

REQUEST HEADERS: GET / HTTP/1.1 Accept: application/json, text/plain, */* User-Agent: axios/0.19.2 Host: www.google.com Connection: close
正如您所看到的,第一个响应提供了许多要设置的 cookie,但连续请求不会发送它们。
如何让 axios 在请求之间保留 cookie?

最佳答案

嗯...我懒得做困难的事情,所以我只是做这样的事情,使用 axios-cookie-jar-support :

const axios = require('axios').default;
const axiosCookieJarSupport = require('axios-cookiejar-support').default;
const tough = require('tough-cookie');

axiosCookieJarSupport(axios);

const cookieJar = new tough.CookieJar();

axios
.get('https://google.com', {
jar: cookieJar, // tough.CookieJar or boolean
withCredentials: true, // If true, send cookie stored in jar
})
.then(() => {
console.log(cookieJar);
});

关于node.js - 使用 AXIOS (Node.js) 在请求之间保留 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63791494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com