我有一个使用Django登录/认证的登录,一旦我发布登录请求,我会收到403 Forbidden错误,并显示以下消息:
CSRF验证失败。请求已中止。
您看到此消息是因为此站点在提交表单时需要CSRF Cookie。出于安全原因,需要使用此Cookie,以确保您的浏览器不被第三方劫持。
如果您的浏览器已设置为禁用Cookie,请重新启用它们,至少对本网站或“同源”请求。帮助失败原因:
CSRF cookie not set.
这只发生在登录时,而不发生在我的应用程序中的其他窗体上。
这是我的登录表格:
{% extends "main/base.html" %}
{% load static %}
{% load widget_tweaks %}
{% block content%}
<div class='container'>
<div class='row pt-4'>
<div class="col">
</div>
<div class="col-md-4 col-md-offset-4">
<div class="card text-center">
<!-- Login Form -->
<div class="card-header bg-dark">
<h2 class="text-secondary">Login</h2>
</div>
<div class="card-body card text-left">
<form method="POST">
{% csrf_token %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
<div class="form-group">
<label>{{ field.label_tag }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<span class="help-block">{{ error }}</span>
{% endfor %}
</div>
{% endfor %}
<div class="form-group">
<p>¿Olvidaste tú usuario o contraseña?<a href=""> Click aquí!</a></p>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Ingresar</button>
</div>
</form>
</div>
</div>
</div>
<div class="col">
</div>
</div>
</div>
{% endblock %}
我已经尝试了设置中的所有内容:
ALLOWED_HOSTS = ['http://*', 'https://*'] ( I have tried with the specific url)
CSRF_TRUSTED_ORIGINS = ['http://*', 'https://*'] ( I have tried with the specific url)
CSRF_COOKIE_SECURE = True (I have tried with False)
SESSION_COOKIE_SECURE = True (I have tried with False)
该功能在本地登录时运行良好。
如果在生产中,我首先访问管理员,然后回到应用程序的登录,它工作正常,但如果我关闭浏览器windonw并通过登录再次访问我得到403错误.
我使用Djano 3.2版本
浏览器检查--网络
1条答案
按热度按时间zf9nrax11#
问题是我必须通过https://访问,而我只使用http://访问该网站