【问题标题】:Elastic beanstalk Django POST: CSRF verification failed. Request abortedElastic beanstalk Django POST:CSRF 验证失败。请求中止
【发布时间】: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


    【解决方案1】:

    当你把你的模板{% csrf_token %} django create &lt;input type='hidden' name='csrfmiddlewaretoken' value='CMVhN4HQ2Uke6Dg9ytQDFSIAsLjnEAaL' /&gt;,这是正常的。回到您的问题,您是否尝试将{% csrf_token %} 放入表格中?

    【讨论】:

    • 抱歉。 {% csrf_token %} 真的是我所做的。 &lt;input type='hidden' name='csrfmiddlewaretoken' value='CMVhN4HQ2Uke6Dg9ytQDFSIAsLjnEAaL' /&gt; 只是一个演示。
    猜你喜欢
    • 2016-03-25
    • 2016-04-15
    • 2012-12-07
    • 2015-03-08
    • 1970-01-01
    • 2014-02-03
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多