这很难解释,但我会尽力而为。
我正在使用React Native并通过远程服务器进行身份验证。每次都运行良好。当我尝试使用刚刚得到的cookie在服务器上执行GET请求时,就会出现问题。第一个GET请求运行良好,但是第二个GET请求始终失败,表示cookie无效。在服务器端,我看到第二个请求的cookie如下:
{"token":"c0b74f70-6bd2-40e0-98e7-a9410e15600e","user_id":1},auth={"token":"c0b74f70-6bd2-40e0-98e7-a9410e15600e","user_id":1}
这似乎是第一个请求的cookie添加到第二个请求的cookie。如果我从第二个GET请求的标头中删除cookie,它们仍将使用第一个GET请求中的cookie进行身份验证并正确执行。
即使在手机和计算机上重新启动Expo之后,请求也将继续包含我未提供的Cookie。我只能通过清除手机上的缓存来摆脱它。
请注意:初始请求之后的所有Get请求都包含一个标头中未提供的cookie。例如,此请求将在标头中包含一个cookie,即使没有明确给出:
_httpGet = (cookie, callback)=>{
fetch('http://fake.internet.website/api/delivery/0')
.then((response) => response.json())
.then((res)=>{
callback(res);
});
};
身份验证请求:
_authenticate = (u, p)=>{
fetch('http://fake.internet.website/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
cache: 'no-cache',
body: 'username=' + u.replace("@", "%40") + '&password=' + p
}).then((res)=>{
let cookie = res.headers.map["set-cookie"][0].split(";")[0];
if (cookie)
{
this._storeData("cookie", cookie);
console.log(cookie);
}
});
};
初始GET请求:
_httpGet = (cookie, callback)=>{
let data = {
method: 'GET',
headers: {'Cookie': cookie},
cache: 'no-cache'
}
fetch('http://fake.internet.website/api/delivery/0', data)
.then((response) => response.json())
.then((res)=>{
callback(res);
});
};
我的问题:这是提取命令是否以某种方式持久地将标头数据存储在缓存中,还是可以排除该错误并假定这是我的愚蠢编码错误?