2016-12-27 94 views
1

每當我嘗試登錄到Django Admin或每次嘗試註冊Django應用程序時,都會收到此錯誤。Django:「禁止(403)CSRF驗證失敗,請求中止。」在Docker Production中

我在Docker中使用Production和http服務站點。 無論我知道,這個問題的出現是因爲通過http而不是https服務它。

這裏是我的生產settings.py:

SECURE_HSTS_SECONDS = 518400 
SECURE_HSTS_INCLUDE_SUBDOMAINS = env.bool('DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS', default=True) 
SECURE_CONTENT_TYPE_NOSNIFF = env.bool('DJANGO_SECURE_CONTENT_TYPE_NOSNIFF', default=True) 
# SECURE_BROWSER_XSS_FILTER = True 
SESSION_COOKIE_SECURE = False 
SESSION_COOKIE_HTTPONLY = True 
SECURE_SSL_REDIRECT = env.bool('DJANGO_SECURE_SSL_REDIRECT', default=False) 
CSRF_COOKIE_SECURE = False 
CSRF_COOKIE_HTTPONLY = True 
X_FRAME_OPTIONS = 'DENY' 

我知道我必須做出一些改變這個設置,使其工作,但我不知道是哪一個。

回答

0

this question試試回答:

您需要添加{%csrf_token%}在您的形式

https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/

這樣的:

<form> 
    {% csrf_token %} 
    <anything_else> 
</form> 

而且,你必須每次使用render_to_response時使用RequestContext(請求):

return render_to_response("login.html", 
    {"registration_id":registration_id}, 
    context_instance=RequestContext(request)) 

而且你必須導入身份驗證和登錄:

from django.contrib.auth import authenticate, login 
+0

我的問題是不是與{%csrf_token%},我的網站在'https'運作良好,但是當我爲它服務這個問題只出現使用'http' –

相關問題