Cookie在Koa / Express请求中是“未定义的”

我使用Koa JS框架进行jwtauthentication。

所以,基本上当用户login时,我设置了一个jwt令牌(签名)到用户的浏览器cookie,这似乎工作正常,如下所示(Chrome cookie设置):

在这里输入图像描述

(www.localhost.com而不是本地主机是因为我编辑了我的主机文件,但这不应该设置/获取cookie)

但是,问题是当我发送POST请求到我的本地Koa服务器时,jwt cookie是未定义的。 我正在做的validation令牌是这样的:

routes.js

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()); 

这里, this.cookies.get(“jwt”)返回undefined。 POST请求使用带有“withCredentials:true”标头和有效的CSRF标记的AXIOS库发送:

authenticate.js

 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.get无法从简单的POST请求获取cookie? 我只是发布到我的本地主机,所以我相信这不是一个CORS问题。

更奇怪的是,当我检查我的Chrome开发者工具时,“jwt”和“jwt.sig”令牌已成功包含在请求头中。

在这里输入图像描述

任何帮助,将不胜感激。

更新:设置cookie

 //... this.cookies.set("jwt", "SOME JWT GENERATED BY SERVER", { httpOnly: true, signed: true, }); //... 

       

网上收集的解决方案 "Cookie在Koa / Express请求中是“未定义的”"