【发布时间】:2016-10-05 10:26:50
【问题描述】:
我无法通过 FORM-POST 和 AJAX-POST 的 CSRF 验证。但它在本地机器或DEBUG=True 中测试时有效。
这是我用于 django 应用程序的内容:
- Django==1.9.2
- django-allauth==0.25.2
- django-redis-sessions==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...
编辑
经过大量尝试,我发现异常行为:{% 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' />
感谢阅读。
【问题讨论】:
标签: django amazon-elastic-beanstalk csrf gunicorn