2016-12-27 29 views
1

Я получаю эту ошибку всякий раз, когда я пытаюсь войти в Django Admin или всякий раз, когда я пытаюсь зарегистрироваться в своем приложении Django.Django: Запрещено (403) Ошибка CSRF. Запрос прерван. " в 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> 

Кроме того, вы должны используйте RequestContext (запрос) каждый раз, когда вы используете render_to_response:

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' –