ExpressJS Cookie-Parser不在不同的HTTP调用之间持久化

时间:2016-05-28 19:07:32

标签: javascript node.js express cookies session-cookies

我正在使用Cookie - Parser和express.js。在我的快速配置文件中,我有<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <p><span id="example">Click Here</span></p>,在服务器的主(app.js)中,每当有app.use(cookieParser())的POST请求时,我都会设置cookie,用户名和密码都相等。

/signIn

现在,当客户端将此作为Fetch API响应的一部分收到时,它会提取JSON的app.post("/signIn",(req,res)=>{ log(`Checking .....`); const req_data=req.body; log(req.body); if(req.body.user===req.body.password) { res.cookie.level="recruiter";//I even tried doing with res.cookie("level","recruiter") res.send({redirect:true,redirect_url:"\\"+res.cookie.level}) } else { log(`Fishy..!`); res.send({"authenticated":false}); } }); 部分并执行以下操作:

redirect_url

现在真正的问题是,当我在另一条路线中尝试使用以下代码访问先前在fetch("/signIn",{ method:"POST", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body:JSON.stringify(json) }) .then((res)=>{ log(res); return res.json(); }) .then((res)=>{ if(res["authenticated"] == false) { $("#credential_alert").style="display:block;"; setTimeout(function(){ $("#credential_alert").style="display:none;"; },1000); $("#user").value=""; $("#password").value=""; } else if(res["redirect"]===true && res["redirect_url"]) { window.location.href=res["redirect_url"]; } }) 路线中设置的HTTP Cookie时。

/signIn

正如您所看到的,来自app.get("/recruiter",(req,res)=>{ log(req.cookies.level);//Coming out as undefined res.render("recruiter.ejs"); }); 的{​​{1}}以未定义的形式出现,我不知道为什么。

答案 得到了答案,实际上level API默认情况下不会根据请求发送任何凭据,因此我们必须设置res.cookies以发送凭据以及fetch api的呼叫。

1 个答案:

答案 0 :(得分:0)

嗨其实你只为那个请求设置cookie意味着(通过defualt httpOnly:true) 所以你要像这样设置cookie res.cookie( “水平”, “招募者”,{仅Http:假,MAXAGE:/可选择的/})