我使用 jwt auth 开发了一个 spring boot api,我得到了端点
'http://localhost:8080/api/signin'
如果登录成功,它会返回一个 JSESSIONID,它是一个 jwtToken。到那里为止,一切都很好,但我可以从浏览器中的 API 获取其他方法,因为 cookie 没有在请求正文中传递。
jwt生成的cookie如下所示:JSESSIONID=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTY4NTE1Mzk5NSwiZXhwIjoxNjg1MjQwMzk1fQ.9jxHyzDJKVra8IryxbH8se0xSl4_Dka pNsKmjRCvlJs_R8M3x3RBMeo-1VPAJv6YSQwC6ukJutRwGEyfeYrGwQ;路径=/;仅 Http;过期=2023 年 5 月 28 日星期日 02:38:33 GMT;
例如: 如果我这样做
curl --location 'http://localhost:8080/user/admin/all' --header 'Cookie: JSESSIONID=mycookie'
一切顺利,并返回我想要的 json,但是当我在浏览器上运行它时,在我的前端的 js 脚本中
axios .get("http://localhost:8080/user/admin/all", { headers: { Cookie: "JSESSIONID=mycookie", }, }) .then((response) => { console.log(response.headers); console.log(response.data); }) .catch((error) => { console.error("Erro:", error); });
我收到此错误:
GET http://localhost:8080/user/admin/all 401
未设置 cookie。我尝试了很多事情,几乎失去了理智。你们知道它会是什么吗?
您需要设置
withCredentials: true