持久获取标题数据

时间:2018-07-12 14:59:48

标签: react-native httprequest fetch expo

这很难解释,但我会尽力而为。

我正在使用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);
  });
};

我的问题:这是提取命令是否以某种方式持久地将标头数据存储在缓存中,还是可以排除该错误并假定这是我的愚蠢编码错误?

0 个答案:

没有答案