Hai*_*iri 5 cookies node.js axios
$ node -v v10.15.0
"axios": "^0.19.2",
Run Code Online (Sandbox Code Playgroud)
我试图将 cookie 保留在响应标头字段“set-cookie”中 - 就像浏览器一样。我曾经使用过这个模块(https://www.npmjs.com/package/request)并且有一个request.defaults({jar: true})效果很好的选项。
对于 axios,我要求它{withCredentials: true}可以完成这项工作 - 但它不能。
这是一个示例代码:
$ node -v v10.15.0
"axios": "^0.19.2",
Run Code Online (Sandbox Code Playgroud)
控制台结果如下:
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);
});
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,第一个响应提供了许多要设置的 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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7013 次 |
| 最近记录: |