django返回的cookie报错:前端报错:"尝试通过Set-Cookie标头设置Cookie时被阻止,因为它具有"SameSite=None"属性,但没有使用"SameSite=None"所必需的"Secure"属性.
时间: 2023-07-06 07:23:26 浏览: 215
这个问题是由于 Chrome 80 版本开始增加了默认的 SameSite 属性,如果在设置 Cookie 的 SameSite 属性为 None 时,同时没有设置 Secure 属性,那么在 Chrome 80 版本及以上浏览器中会报错。
为了解决这个问题,我们需要在设置 Cookie 的时候,将 SameSite 属性设置为 None,并且同时设置 Secure 属性,以确保 Cookie 只能通过 HTTPS 进行传输,从而避免中间人攻击。
在 Django 中,我们可以通过设置 `SESSION_COOKIE_SECURE` 和 `CSRF_COOKIE_SECURE` 两个参数来启用 Secure 属性,同时使用 `SESSION_COOKIE_SAMESITE` 和 `CSRF_COOKIE_SAMESITE` 两个参数来设置 SameSite 属性为 None。
例如,在 settings.py 文件中添加以下代码:
```python
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = 'None'
```
这样就能够在 Django 中启用 Secure 和 SameSite 属性,从而避免在 Chrome 80 版本及以上浏览器中报错。
阅读全文