【发布时间】:2021-11-16 20:46:00
【问题描述】:
我正在尝试使用 GraphQL 通过 JWT 对用户进行身份验证。登录用户后,我会收到作为 JSON 响应的令牌和存储刷新令牌的 httponly cookie。 (服务端使用的是 Saleor-core)
根据 Saleor 的文档和其他一些博客文章,我假设这个响应 cookie 现在应该存储在浏览器中,并且每当我需要刷新令牌时,cookie-refreshToken 用于验证我的请求。但是,当我在开发工具中将选项卡切换到“应用程序”时,它只是空的。
浏览器收到 cookie 响应后的正常行为是什么?我是否需要一些额外的代码来以某种方式“保存”该响应 cookie?
并没有真正发现其他人有这个问题,所以我认为错误一定是在其他地方。
更新
我在某处读到问题可能是由于服务器调试模式没有“安全”标志。我把它关掉了,但仍然没有设置 cookie。
响应标头:
HTTP/1.1 200 OK
Connection: keep-alive
Date: Thu, 23 Sep 2021 13:32:33 GMT
Server: uvicorn
Content-Type: application/json
Access-Control-Allow-Origin: https://rewhite-86006--beta-duoa0dwg.web.app
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, Authorization-Bearer
Access-Control-Allow-Credentials: true
Content-Length: 912
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
Set-Cookie: refreshToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MzI0MDM5NTQsIm93bmVyIjoic2FsZW9yIiwiZXhwIjoxNjM0OTk1OTU0LCJ0b2tlbiI6Ijd2b0VmMm1DNlZZSyIsImVtYWlsIjoiSnVsaWFuLkZpbmtlQGdtYWlsLmNvbSIsInR5cGUiOiJyZWZyZXNoIiwidXNlcl9pZCI6IlZYTmxjam8zTmc9PSIsImlzX3N0YWZmIjpmYWxzZSwiY3NyZlRva2VuIjoiWm55ek9xVG9rOU9GYXlDZXY0cjFxMUxnaktnTXRRR0VNUVJEalR1eTJDZ1IyOW1GSVBxQ1B1T1hZcTFQNk92cyJ9.Cl6PmoLkO9Hlh36tDOuyNLQCib4FVBwn32hhnmd7Q4E; expires=Sat, 23 Oct 2021 13:32:34 GMT; HttpOnly; Max-Age=2592000; Path=/; Secure
Via: 1.1 vegur
请求标头:
POST /graphql/ HTTP/1.1
Host: rewhite-saleor-engine.herokuapp.com
Connection: keep-alive
Content-Length: 318
Pragma: no-cache
Cache-Control: no-cache
sec-ch-ua: "Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
sec-ch-ua-platform: "macOS"
content-type: application/json
Accept: */*
Origin: https://rewhite-86006--beta-duoa0dwg.web.app
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://rewhite-86006--beta-duoa0dwg.web.app/
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
感谢您的帮助!
【问题讨论】:
-
我注意到您的响应 Cookie 的
Domain属性与您在应用程序 Cookie 中的属性不同。可能值得导航到浏览器中 cookie 提供的域 url,并检查 cookie 是否可用。 -
@Mythos 谢谢,这是一个很好的提示。不幸的是,那里也没有 cookie。也许只是因为域不同而没有保存?
-
是的,我就是这么想的,我只是想核对一下,以防我错了。介意我将其添加为答案吗?
标签: vue.js cookies graphql jwt saleor