Джанго: Запрещено (403) Проверка CSRF не удалась. Запрос прерван. в Докер Продакшн

Я получаю эту ошибку всякий раз, когда пытаюсь войти в Django Admin или всякий раз, когда пытаюсь зарегистрироваться в своем приложении Django.

Я использую Production в Docker и обслуживаю сайт с помощью http. Насколько я знаю, эта проблема возникает из-за того, что она обслуживается через http вместо https.

Вот мои производственные настройки.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'

Я знаю, что мне нужно внести некоторые изменения в этот параметр, чтобы он заработал, но я не знаю, какой именно.


person Piyush Maurya    schedule 27.12.2016    source источник
comment
Столкнулся с этой проблемой, и мне пришлось удалить все настройки безопасности, о которых я не знал, как они работают, используя настройки cookiecutter-django по умолчанию.   -  person Redgren Grumbholdt    schedule 28.06.2019


Ответы (1)


Попробуйте ответить на этот вопрос:

Вам нужно добавить {% csrf_token %} в вашу форму

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

как это :

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

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

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

И вам нужно импортировать аутентификацию и логин:

from django.contrib.auth import authenticate, login
person Adi Mabfalin    schedule 27.12.2016
comment
Моя проблема не в {% csrf_token %}, мой сайт хорошо работает в течение https, но эта проблема возникает только тогда, когда я обслуживаю его с помощью http - person Piyush Maurya; 28.12.2016