Ajax 曲奇是;“未定义”;科威特航空公司/特快专递请求 我使用膝关节炎JOS框架进行JWT认证。
因此,基本上,当用户登录时,我将jwt令牌(已签名)设置到用户的浏览器cookie,它似乎工作正常,如下所示(Chrome cookie设置):Ajax 曲奇是;“未定义”;科威特航空公司/特快专递请求 我使用膝关节炎JOS框架进行JWT认证。,ajax,node.js,express,cookies,koa,Ajax,Node.js,Express,Cookies,Koa,因此,基本上,当用户登录时,我将jwt令牌(已签名)设置到用户的浏览器cookie,它似乎工作正常,如下所示(Chrome cookie设置): (www.localhost.com而不是localhost是因为我编辑了我的主机文件,但这对设置/获取cookie没有影响) 然而,问题是当我向本地膝关节炎服务器发送POST请求时,JWT cookie未定义。我要做的只是验证令牌: routes.js 这里,this.cookies.get(“jwt”)返回未定义的。POST请求使用带有“wi
(www.localhost.com而不是localhost是因为我编辑了我的主机文件,但这对设置/获取cookie没有影响)
然而,问题是当我向本地膝关节炎服务器发送POST请求时,JWT cookie未定义。我要做的只是验证令牌: routes.js 这里,this.cookies.get(“jwt”)返回未定义的。POST请求使用带有“withCredentials:true”标头和有效CSRF令牌的AXIOS库发送:
authenticate.js 有人能帮我找出为什么this.cookies.get无法从简单的POST请求中获取cookie吗?我只是在本地主机上发帖,所以我相信这不是CORS的问题 更奇怪的是,当我检查我的chrome开发者工具时,“jwt”和“jwt.sig”标记成功地包含在请求头中
任何帮助都将不胜感激
更新:设置cookie
if!(jwt)
或如果(!jwt)
?@Vohuman感谢您捕捉到这一点,但这只是一个打字错误。当我调试我的节点js服务器时,我的调试程序中的“jwt”是“未定义”的。您的应用程序中是否启用了cookie解析器
中间件?具体来说,在你的路由器之前?类似于代码> app。使用(CueIGPARSUR)()@ RoFLMyGGO,根据膝关节炎官方文档,似乎不需要像Express那样的CuffIEPARSER。如果你在膝关节炎上下文之外直接在原始节点中(在请求中运行控制台.log(这个.qq.Health.Cookie)),你能看到任何cookies吗?
const Router = require("koa-router");
const router = new Router();
router.post(`api/authenticate`, function* () {
const jwt = this.cookies.get("jwt", { signed: true }); //jwt is undefined!!
if (!jwt)
this.throw("Invalid or expired token!");
this.status = 200;
});
//...
app.use(router.routes());
app.use(router.allowedMethods());
axios.post("api/authenticate", {}, {
headers: {
"X-Requested-With": "XMLHttpRequest",
"X-CSRF-Token": "A VALID CSRF TOKEN GENERATED BY SERVER",
"Content-Type": "application/json",
},
withCredentials: true,
});
//...
this.cookies.set("jwt", "SOME JWT GENERATED BY SERVER", {
httpOnly: true,
signed: true,
});
//...