- 27
- 0
axios使用问题
问题描述
纯后端运行及 node.js情况下
在使用axios模拟登录时,登录后的cookies在第二次请求的时候无法带在网络请求中。
问题代码:
const axios = require('axios');
const instance = axios.create(
{
headers: {
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
},
withCredentials: true,
transformRequest: [function (data) {
// Do whatever you want to transform the data
let ret = '';
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
}
return ret;
}]
}
);
(
async () => {
await instance.post('http://127.0.0.1:5000/wc/CqClassBox/lei',
{
pw: '0005f2d9c91740c4af7114db2346004c'
}
).then(res => {
// console.log(res)
// console.log(res.headers['set-cookie']);
console.log(res.request._header);
console.log(res.headers);
console.log(res.data);
console.log(res.headers['set-cookie'])
});
await instance.post('http://127.0.0.1:5000/wc/CqClassBox/loginTest',
{
username: '12346789',
password: '12346789'
}
).then(res => {
console.log(res.request._header);
console.log(res.headers);
console.log(res.data);
console.error("-----------");
// console.log(res)
console.log(res.headers['set-cookie'])
console.log(instance.defaults.withCredentials)
});
}
)();
预期结果
预期在第二次的axios的post请求,headers中带上第一次请求获得的cookies。但第二次请求中没有携带第一次请求后的cookies,不知道问题出现在哪里。
运行结果
PS D:\Github\My-Snippets\Spider\Js_Spider> node .\test.js
POST /wc/CqClassBox/lei HTTP/1.1
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Content-Length: 36
Host: 127.0.0.1:5000
{ 'content-type': 'text/html; charset=utf-8',
'content-length': '10',
vary: 'Cookie',
'set-cookie':
[ 'session=eyJwdyI6IjAwMDVmMmQ5YzkxNzQwYzRhZjcxMTRkYjIzNDYwMDRjIn0.XQT6Tg.5xt9bhpmhrioL2YjigEndHvsWhE; HttpOnly; Path=/' ],
server: 'Werkzeug/0.14.1 Python/3.7.3',
date: 'Sat, 15 Jun 2019 14:01:50 GMT' }
welcom lei
[ 'session=eyJwdyI6IjAwMDVmMmQ5YzkxNzQwYzRhZjcxMTRkYjIzNDYwMDRjIn0.XQT6Tg.5xt9bhpmhrioL2YjigEndHvsWhE; HttpOnly; Path=/' ]
POST /wc/CqClassBox/loginTest HTTP/1.1
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Content-Length: 36
Host: 127.0.0.1:5000
{ 'content-type': 'application/json',
'content-length': '55',
server: 'Werkzeug/0.14.1 Python/3.7.3',
date: 'Sat, 15 Jun 2019 14:01:50 GMT' }
{ errorMessage: 'no pw session', messageStatus: false }
-----------
undefined
true
疑问
是不是axios的cookies只能从浏览器中获取?
- 共 0 条
- 全部回答
-
咫侑厄想迩 普通会员 1楼
使用axios模拟登录时,如果登录后的cookies无法使用,可能有以下几个原因:
- cookies的设置问题:请确保在axios模拟登录后,您已经设置了cookies。如果没有设置,需要在模拟登录后的请求中设置cookies。在axios模拟登录后,返回的response对象中有一个cookies属性,您可以使用这个属性来设置cookies。
javascript axios.post('/login', { username: 'username', password: 'password' }) .then(response => { // 使用response.cookies设置cookies console.log(response.cookies); }) .catch(error => { // 处理错误 });- cookies的名称问题:在axios模拟登录后,返回的response对象中有一个cookies属性,这个属性的名称是'cookie_name'。请确保在设置cookies时,将'cookie_name'替换为实际的cookies名称。
javascript axios.post('/login', { username: 'username', password: 'password' }) .then(response => { // 使用response.cookies设置cookies console.log(response.cookies); }) .catch(error => { // 处理错误 });- cookies的值问题:在axios模拟登录后,返回的response对象中有一个cookies属性,这个属性的值是'cookie_value'。请确保在设置cookies时,将'cookie_value'替换为实际的cookies值。
javascript axios.post('/login', { username: 'username', password: 'password' }) .then(response => { // 使用response.cookies设置cookies console.log(response.cookies); }) .catch(error => { // 处理错误 });- cookies的过期问题:请确保在axios模拟登录后,返回的response对象中有一个cookies属性,这个属性的过期时间是'cookie_expiration_time'。请确保在设置cookies时,将'cookie_expiration_time'替换为实际的cookies过期时间。
javascript axios.post('/login', { username: 'username', password: 'password' }) .then(response => { // 使用response_cookies设置cookies console.log(response.cookies); }) .catch(error => { // 处理错误 });- cookies的加密问题:请确保在axios模拟登录后,返回的response对象中有一个cookies属性,这个属性的加密方法是'cookie_encryption_method'。请确保在设置cookies时,将'cookie_encryption_method'替换为实际的cookies加密方法。
javascript axios.post('/login', { username: 'username', password: 'password' }) .then(response => { // 使用response_cookies设置cookies console.log(response.cookies); }) .catch(error => { // 处理错误 });以上是使用axios模拟登录时,登录后的cookies无法使用的一些常见原因。请根据实际情况进行排查。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

