禁止(403)CSRF验证失败请求中止即使使用{%csrf 您所在的位置:网站首页 csrf验证码 禁止(403)CSRF验证失败请求中止即使使用{%csrf

禁止(403)CSRF验证失败请求中止即使使用{%csrf

2023-11-08 13:37| 来源: 网络整理| 查看: 265

如何解决禁止(403)CSRF验证失败请求中止即使使用{%csrf_token%}?要使csrf保护起作用,需要做一些事情(请查看docs):

你的浏览器必须接受服务器中的Cookie确保已将' django.middleware.csrf.CsrfViewMiddleware'作为中间件包含在中间settings.py(或者在要保护的特定视图上使用装饰器csrf_protect())确保将csrf令牌从django.core.context_processors.csrf传递给上下文管理器。 加载页面时,请使用喜欢的浏览器查看页面源。不要打开模板html文件,打开指向包含表单的视图的URL。看看你放在哪里{% csrf_token %}。如果看到类似你应该没事的。

另一方面NOTPROVIDED,如果你看到,则在创建csrf令牌时出现了问题。通过查看源代码(context_processors.py和csrf.py),我们可以发现:

csrf(request)回报{'csrf_token': 'NOTPROVIDED'},如果get_token(request)回报无。get_token(request)返回request.Meta.get("CSRF_COOKIE", None)。我认为这意味着None如果未成功创建cookie ,它将返回。

对你来说,这意味着你应该先更换

与 {% csrf_token %} (...) 我们希望csrf字段位于内部...,而不是内部。由于目前的代码是,它将被转换为 > 我们希望 之后-查看源代码,看看是否可以找到csrf字段。如果你能看到它,那么一切都应该在理论上起作用。

你还可以检查浏览器(例如Chrome)中是否设置了csrf cookie,右键单击网页,然后选择Insepect Element。选择Resources选项卡,然后单击cookie。你应该在csrftoken那里找到一个cookie名称。

如果仍然有问题,请仔细检查你的中间件元组,settings.py并如上所述检查浏览器是否接受来自服务器的cookier。

解决方法禁止(403)CSRF验证失败。请求中止。即使使用{%csrf_token%}我正在尝试在django中进行登录,但出现此错误,我检查了CSRF文档,但对我来说没有任何用处。

这是HTML:

Login to Web App {% if form.errors %}

Lo sentimos,la combinacion de usuario y contrasena no es correcta!

{% endif %} {% csrf_token %}

就像你在上面看到的那样,我使用了{%csrf_token%},并且在已安装的应用程序中有“ django.middleware.csrf.CsrfViewMiddleware”。

我的看法是:

from django.http import HttpResponse,HttpResponseRedirectfrom django.template.loader import get_templatefrom django.template import Contextfrom datetime import datetimefrom django.shortcuts import render_to_responsefrom django.http import HttpResponseRedirectfrom django.contrib import authfrom django.core.context_processors import csrffrom models import *from django.shortcuts import get_object_or_404from forms import *from django.template.context import RequestContextfrom django.contrib.auth.decorators import login_requiredfrom django.contrib.auth import authenticate,logindef login(request): c = {} c.update(csrf(request)) return render_to_response('login.html',c)def auth_view(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username,password=password) if user is not None: auth.login(request.user) return HttpResponse('/accounts/loggedin') else: return HttpResponse('/accounts/invalid')我重定向到另一个我不使用{%csrf_token%}的HTML文件。声明:地推任务网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有