2015-10-05 22 views
0

我有工作過,遺憾的是我沒有最近的備份,所以我可以回到網頁的最近的工作版本的頁面。的Django未能趕上/處理CSRF令牌

我所擁有的是使用allauth來處理頁面創建和登錄用戶的頁面。但是,現在當我填寫表單來註冊或登錄用戶時,我得到一個403 error,說CSRF verification failed. Request aborted

我已經檢查了頁面的餅乾,並有一個csrf token存在。我試圖刪除並重新加載頁面。 Cookie再次被重新創建,但仍然是相同的錯誤。登錄到admin頁面也出現同樣的錯誤,我只能假設其他頁面爲form

我已經包含在我的設置文件django.middleware.csrf.CsrfViewMiddleware,所以我很茫然,什麼是導致此錯誤。

settings.py

import os, djcelery 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

SECRET_KEY = censored... 
DEBUG = False 
ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', 'localhost'] 

# Application definition 
INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.sites', 
    'django.contrib.staticfiles', 
    'interface', 
    'chemrun', 
    'kombu.transport.django', 
    'chemicalizer.tasks', 
    'json', 
    'django_nvd3', 
    'djangobower', 
    'allauth', 
    'allauth.account', 
    'djangosecure', 
) 

MIDDLEWARE_CLASSES = (
    'djangosecure.middleware.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.middleware.security.SecurityMiddleware', 
) 

ROOT_URLCONF = 'chemicalizer.urls' 

TEMPLATES = [ 
    { 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': ['interface'], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.i18n', 
      'django.template.context_processors.media', 
      'django.template.context_processors.static', 
      'django.template.context_processors.tz', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
    }, 
] 
+1

你可以添加模板/視圖中,出現這種情況? – Jand

+0

我使用allauth,所以它是標準模板和視圖。我沒有改變它。 – Tobias

回答

0

看起來你的代碼不發送CSRF令牌回來。它需要添加到標題。

+0

我該怎麼做?我對Django仍然很陌生,所以詳細描述非常有幫助:) – Tobias

+0

CSRF是一件非常簡單的事情。服務器發送一個令牌給它的客戶端,然後在下一個請求客戶端發回它。 CSRF令牌通過頁眉被髮送。如果你的服務器抱怨CSRF令牌,這意味着它的瀏覽器缺少(不發送),或者不同(可能是服務器配置問題)。 –

+0

因爲我可以在瀏覽器中看到cookie,所以我認爲這足以證明它已發送,但由於配置問題,服務器無法識別它。你有一個想法,我可能會尋找什麼問題? – Tobias