【发布时间】:2022-10-19 05:33:12
【问题描述】:
我正在使用 Django 通过 set_cookie 在响应中返回一个 cookie:
response.set_cookie(
key = settings.SIMPLE_JWT['AUTH_COOKIE'],
value = data["refresh"],
expires = settings.SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'],
path = settings.SIMPLE_JWT['AUTH_COOKIE_PATH'],
secure = settings.SIMPLE_JWT['AUTH_COOKIE_SECURE'],
httponly = settings.SIMPLE_JWT['AUTH_COOKIE_HTTP_ONLY'],
samesite = settings.SIMPLE_JWT['AUTH_COOKIE_SAMESITE'],
)
其中值是:
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
...
'AUTH_COOKIE': 'refresh_token',
'AUTH_COOKIE_SECURE': False,
'AUTH_COOKIE_HTTP_ONLY' : True,
'AUTH_COOKIE_PATH': '/',
'AUTH_COOKIE_SAMESITE': 'Lax',
}
CORS 设置正确。我也在我的 axios 请求中正确发送了withCredentials: true,。
我的问题是,当我在开发中进行测试时(即前端托管在 http://127.0.0.1:3000/ 和后端托管在 http://127.0.0.1:8000/),系统可以正常工作(即设置 cookie)。但是,当我使用 ngrok 将我的后端隧道传输到安全 url 时,没有任何效果。我的回复中仍然有 set-cookie 标头,所以我收到了 cookie - 它只是没有设置它们。另外,我在 Safari 上(因为我知道 Chrome 存在设置 cookie 的问题,因为它需要相同站点和安全的值)。
这是我的回复:here
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
您已经尝试将此
https://ae15-86-9-214-172.ngrok.io添加到您的 cors 允许的来源?