Python Django-403禁止CSRF验证失败
我在Django为我的网站准备了一份联系表,当我在本地测试它时,它运行良好,但现在当我尝试“现场”提交我的联系表时,它总是显示403禁止CSRF验证失败 视图: contact.htmlPython Django-403禁止CSRF验证失败,python,django,csrf,django-csrf,Python,Django,Csrf,Django Csrf,我在Django为我的网站准备了一份联系表,当我在本地测试它时,它运行良好,但现在当我尝试“现场”提交我的联系表时,它总是显示403禁止CSRF验证失败 视图: contact.html {% extends 'site_base.html' %} {% block head_title %}Contact{% endblock %} {% block body %} <h2>Contact Us</h2> <p>To send
{% extends 'site_base.html' %}
{% block head_title %}Contact{% endblock %}
{% block body %}
<h2>Contact Us</h2>
<p>To send us a message, fill out the below form.</p>
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<form action="" method="POST">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<br />
<button type="submit" value="Submit" class="btn btn-primary">Submit</button>
</form>
{% endblock %}
在试图排除某些因素后,我发现了以下几点。当我在浏览器上注释掉SESSION\u COOKIE\u SECURE=TRUE
和CSRF\u COOKIE\u SECURE=TRUE
和SESSION\u EXPIRE\u时,它不会出问题
如果我只是注释掉CSRF\u COOKIE\u SECURE=TRUE
就可以了。我处理CSRF的方式似乎有点奇怪。。。任何帮助都会很好。在我听来,如果你在评论这行内容时,它工作正常,那么该站点就不是https了CSRF\u COOKIE\u SECURE=True
使CSRF令牌仅在文档中使用ssl您是否通过https
为您的站点提供服务?整个网站是这样的,还是仅仅是表单提交?如果浏览器最初通过http
发送cookie,我认为它不会在通过https
提交表单时返回cookie。是的,这似乎就是问题所在。我现在不需要我的网站使用https,所以我暂时不评论它。谢谢@真的吗?只是禁用csrf保护?
{% extends 'site_base.html' %}
{% block head_title %}Contact{% endblock %}
{% block body %}
<h2>Contact Us</h2>
<p>To send us a message, fill out the below form.</p>
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<form action="" method="POST">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<br />
<button type="submit" value="Submit" class="btn btn-primary">Submit</button>
</form>
{% endblock %}
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
MIDDLEWARE_CLASSES = [
"django.middleware.csrf.CsrfViewMiddleware",
"django.middleware.common.CommonMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]