Я не могу передать проверку CSRF ни FORM-POST, ни AJAX-POST. но он работает при тестировании на локальном компьютере или DEBUG=True
.Эластичный фасовочный станок Django POST: проверка CSRF не удалась. Запрос прерван
Это то, что я использую для моего приложения Django:
- Джанго == 1.9.2
- Джанго-allauth == 0.25.2
- Джанго-Redis-сессии == 0.5.0
- gunicorn == 19.4.5
- AWS elasticbeanstalk одного докер
- Настроенные AWS elasticbeanstalk балансировки нагрузки, который принимает как HTTP и HTTPS запросить
и settings.py
:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
также, я использовал render(), {% csrf_token %}
для визуализации ответа.
Я настроил все ресурсы так, как мог. но все-таки получил CSRF verification failed
...
EDIT После тонн попыток, я обнаружил аномальное поведение: {% csrf_token %}
значение обновляется каждый запрос. Я понятия не имею, почему это произошло.
, например,
<form method="post" action="{% url 'www:article' %}">
{% csrf_token %}
<fieldset>
<input type="text" class="form-control" id="title" name="title">
<input type="text" class="form-control" id="subtitle" name="subtitle">
</fieldset>
<input type="submit">
</form>
1st request
<input type='hidden' name='csrfmiddlewaretoken' value='66Z1Xq1tHReWIkK86dx780L8LPqnuLec' />
2nd request
<input type='hidden' name='csrfmiddlewaretoken' value='zw9HKIO7Pv9TpA5Ru4SlbwqA65sAe8NH' />
3rd request
<input type='hidden' name='csrfmiddlewaretoken' value='wMznTwwELz5F8WmBQIg5pBAezdNdN3xV' />
Спасибо за чтение.
О, извините. '{% csrf_token%}' действительно то, что я сделал. '' просто демонстрация. – makerj