Python Referer检查失败(主机安全时Referer不安全)

Python Referer检查失败(主机安全时Referer不安全),python,django,Python,Django,我被这个错误难住了。我在生产服务器上部署了我的代码,它在端口80上运行。当我尝试登录管理页面时。它给我403错误,如图所示 原因可能是什么?我的Django代码或nginx配置中是否存在问题 设置.py文件 import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'xxx' DEBUG = True ALLOWED_HOSTS = ['*'] INSTALLE

我被这个错误难住了。我在生产服务器上部署了我的代码,它在端口80上运行。当我尝试登录管理页面时。它给我403错误,如图所示

原因可能是什么?我的Django代码或nginx配置中是否存在问题

设置.py文件

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = 'xxx'
DEBUG = True
ALLOWED_HOSTS = ['*']

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
 ]

MIDDLEWARE = [
'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',
 ]

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
  ]


ROOT_URLCONF = 'project.urls'


WSGI_APPLICATION = 'project.wsgi.application'

DATABASES = {
  'default': {
     'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 }
 }

AUTH_PASSWORD_VALIDATORS = [
{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
 ]

 STATIC_URL = '/static/'
 STATIC_ROOT = os.path.join(BASE_DIR, "static/")
nginx conf是:

server {
  listen 80;
  server_name www.example.com;


access_log /var/log/nginx/access.log;

 error_log /var/log/nginx/error.log;
 location /static/ {
     alias /example/path/to/static/;
 }

location / {
    include /etc/nginx/sites-available/uwsgi_params;
    uwsgi_pass unix:/path/to/project/yo.sock;
    uwsgi_param       UWSGI_SCHEME https;
    uwsgi_pass_header X_FORWARDED_PROTO;
    proxy_set_header  X-Forwarded-Proto https;
   }
 }

如何解决此错误?

您似乎正在使用HTTP表单url登录HTTPS站点

在这种情况下,会出现以下错误


您应该将登录表单url更改为https://

您能在settings.py中添加SITE_ID=1并尝试一下吗?没有发生任何事情,仍然显示相同的错误。我的站点位于http上,上面的Nginx conf文件显示得非常好。访问Django管理页面时是否需要使用https?当我尝试在生产环境中登录Django管理面板时,它显示了这个错误,而不是在本地主机上!为什么要转发https头,代理设置头X-Forwarded-Proto-https;不。。。我试着对它进行注释,但仍然得到相同的错误。还有其他问题。你有没有注释掉你有https的所有3行,特别是UWSGI_方案也重新启动了ngnix
 if request.is_secure():
            # Ensure that our Referer is also secure.
            if referer.scheme != 'https':
                return self._reject(request, REASON_INSECURE_REFERER)