如何在 django 设置文件中添加相同站点无选项

Posted

技术标签:

【中文标题】如何在 django 设置文件中添加相同站点无选项【英文标题】:How to add samesite none option in django settings file 【发布时间】:2020-12-13 20:32:28 【问题描述】:

我使用的是 Django 2.0.2 版本。我试图在 Django 项目中处理谷歌身份验证。我得到了令牌,但我会传递 URL 和令牌。它返回 404 错误。我需要在 Django 设置项目中添加 samesite='none' 。在哪里添加我不知道,我尝试添加很多方法,但仍然抛出 404 错误。如何解决。

Settings.py

MIDDLEWARE = [
    'django_cookies_samesite.middleware.CookiesSameSite',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

所以,我添加了 samesite.middleware.CookiesSameSite 中间件。但我仍然面临这个警告与http://stats.XXXX.com/ 的跨站点资源关联的cookie 设置为没有SameSite 属性。它已被阻止,因为 Chrome 现在仅在使用 SameSite=NoneSecure 设置时才提供带有跨站点请求的 cookie。您可以在 Application>Storage>Cookies 下的开发者工具中查看 cookie 并查看更多详细信息如何修复它

【问题讨论】:

【参考方案1】:

按照this的说明进行设置

DCS_SESSION_COOKIE_SAMESITE = 'None' 

在 MIDDLEWARE 列表之后的settings.py

您还需要与您的开发服务器建立 ssl 连接或使用一些过时的浏览器,该浏览器允许使用带有 None 属性和不带 secure 属性的 SameSite cookie 策略

【讨论】:

【参考方案2】:

也许某些 cookie 还没有该属性。您可以在设置中尝试使用此标志:

SESSION_COOKIE_SAMESITE_FORCE_ALL = True

【讨论】:

以上是关于如何在 django 设置文件中添加相同站点无选项的主要内容,如果未能解决你的问题,请参考以下文章

Django 管理站点:添加用户页面如何工作(编辑更多字段)?

如何为站点框架 django 设置多个 settings.py?

如何在文件面板中新建文件夹和网页文件

iis中一个站点里的一个视频文件,被下载无数次,如何禁止?

如何在Django的同一个表中阻止外键的相同对象引用?

添加 Django 站点会破坏我在 CentOS 7 上的虚拟主机