React中的Cookie验证

时间:2019-06-02 14:26:08

标签: node.js reactjs cookies fetch session-cookies

TLDR-无法确定它作为响应cookie后如何从React发送cookie,不确定我是否需要从浏览器访问它,或者是否隐式包含了它,而只是不使用正确的标头等?谢谢❤

我已经成功地获取了Node.js后端,以便使用cookie解析器通过我的react应用程序将cookie发送到浏览器:

res.cookie('cookieName','myCookie').status(200).send("Log in successful!");

这源于我在React中的提取请求

fetch("http://localhost:5000/login", {
        method: "POST",
        mode: "cors",
        headers: {
        "Content-Type": "application/json",
        "Access-Control-Allow-Headers": 'x-access-token' //tried with/without this
        },
        credentials: 'same-origin',
        redirect: "follow", 
        referrer: "no-referrer", 
        body: JSON.stringify(data) 
    }).then(res =>    {

      if(res.status === 200){
        console.log("success");
      }

这似乎有效!如果我检查“网络”标签并查看响应,则其中包含响应cookie:

cookieName:
   path:/
   value: myCookie

我现在正试图向包括该cookie的后端发送一个请求,以验证会话等,但是当我尝试在服务器上打印cookie时,它说没有一个?是我尝试发送请求的方式,我假设将包含浏览器cookie,但也许我需要以某种方式明确地包含它? 这是我的要求:

checkCookies = () => {
        fetch("http://localhost:5000/checkcookie", {
        method: "POST", 
        mode: "cors", 
        headers: {
        "Content-Type": "application/json",
        },
        credentials: 'same-origin', // also tried "include"
        redirect: "follow", 
        referrer: "no-referrer", 
        body: JSON.stringify({name: "test"}) 
    })
    }.then(...

1 个答案:

答案 0 :(得分:0)

默认情况下,提取不使用Cookie。启用Cookie:

fetch(url, {
  method: 'GET',
  credentials: 'include'
})
.then(...)

您需要在两个调用中设置相同的credentials值。

在通过Application标签首次请求后,检查cookie是否存储在浏览器中。