弹性beanstalk Django POST:CSRF验证失败。请求中止

时间:2016-06-05 21:12:48

标签: django elastic-beanstalk csrf gunicorn

我无法传递CSRF验证,既不是FORM-POST也不是AJAX-POST。但在本地计算机或DEBUG=True进行测试时,它可以正常工作。

这是我用于django应用程序的内容:

  • 的Django == 1.9.2
  • 的django-allauth == 0.25.2
  • 的django-redis的-会话== 0.5.0
  • gunicorn == 19.4.5
  • AWS elasticbeanstalk single docker
  • 已配置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' />

感谢阅读。

1 个答案:

答案 0 :(得分:0)

当您放置模板{% csrf_token %} django create <input type='hidden' name='csrfmiddlewaretoken' value='CMVhN4HQ2Uke6Dg9ytQDFSIAsLjnEAaL' />时,这是正常的。回答你的问题,你试着把{% csrf_token %}放在表格里吗?