我正在使用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的呼叫。
答案 0 :(得分:0)
嗨其实你只为那个请求设置cookie意味着(通过defualt httpOnly:true) 所以你要像这样设置cookie res.cookie( “水平”, “招募者”,{仅Http:假,MAXAGE:/可选择的/})