我无法传递CSRF验证,既不是FORM-POST也不是AJAX-POST。但在本地计算机或DEBUG=True
进行测试时,它可以正常工作。
这是我用于django应用程序的内容:
和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' />
感谢阅读。
答案 0 :(得分:0)
当您放置模板{% csrf_token %}
django create <input type='hidden' name='csrfmiddlewaretoken' value='CMVhN4HQ2Uke6Dg9ytQDFSIAsLjnEAaL' />
时,这是正常的。回答你的问题,你试着把{% csrf_token %}
放在表格里吗?