django-csrf是Django的跨站点请求伪造(CSRF)保护中间件。
Forbidden 403 前端与 django python 后端发生反应
我需要有关此错误的帮助 这是来自后台的消息: 禁止(来源检查失败 - http://localhost:3000 与任何受信任的来源不匹配。):/user/login/ [2024 年 3 月 4 日 18:17:23] &...
如何使用 requests python 库在 django 视图中调用 api 端点
这是我对登录功能的看法 类登录视图(视图): def get(自身, 请求): 返回渲染(请求,'login.html') def post(自我,请求): print('在帖子中...
我开始了一个新的 Django 1.11 项目,其中包含一个应用程序、一个模型和一个管理面板。在本地,一切正常。当我将其部署到 Amazon EC2 并尝试登录管理面板时,我收到 403 (CSRF
django.security.csrf:禁止(来源检查失败 - https://sentry.domain.com 与任何可信来源不匹配。)
django.security.csrf:禁止(来源检查失败 - https://sentry-domain.com 与任何可信来源不匹配。) 我从 https://github.com/getsentry/self-
我尝试构建一个非常简单的网站,可以在其中将数据添加到 sqlite3 数据库中。我有一个带有两个文本输入的 POST 表单。 索引.html: {% 如果 top_list %} 南... 我尝试构建一个非常简单的网站,可以将数据添加到 sqlite3 数据库中。我有一个带有两个文本输入的 POST 表单。 index.html: {% if top_list %} <ul> <b><pre>Name Total steps</pre></b> {% for t in top_list %} <pre>{{t.name}} {{t.total_steps}}</pre> {% endfor %} </ul> {% else %} <p>No data available.</p> {% endif %} <br> <form action="/steps_count/" method="post"> {% csrf_token %} Name: <input type="text" name="Name" /><br /> Steps: <input type="text" name="Steps" /><br /> <input type="submit" value="Add" /> </form> forms.py: from django import forms from steps_count.models import Top_List class Top_List_Form(forms.ModelForm): class Meta: model=Top_List views.py: # Create your views here. from django.template import Context, loader from django.http import HttpResponse from steps_count.models import Top_List from steps_count.forms import Top_List_Form from django.template import RequestContext from django.shortcuts import get_object_or_404, render_to_response def index(request): if request.method == 'POST': #form = Top_List_Form(request.POST) print "Do something" else: top_list = Top_List.objects.all().order_by('total_steps').reverse() t = loader.get_template('steps_count/index.html') c = Context({'top_list': top_list,}) #output = ''.join([(t.name+'\t'+str(t.total_steps)+'\n') for t in top_list]) return HttpResponse(t.render(c)) 但是,当我单击“提交”按钮时,我收到 403 错误: CSRF verification failed. Request aborted. 我已将 {% csrf_token %} 包含在index.html 中。但是,如果是 RequestContext 问题,我真的不知道在哪里以及如何使用它。我希望所有事情都发生在同一页面上(index.html)。 您可能错过了将以下内容添加到表单中: {% csrf_token %} 使用 render 快捷键,它会自动添加 RequestContext。 from django.http import HttpResponse from django.shortcuts import get_object_or_404, render from steps_count.models import Top_List from steps_count.forms import Top_List_Form def index(request): if request.method == 'POST': #form = Top_List_Form(request.POST) return HttpResponse("Do something") # methods must return HttpResponse else: top_list = Top_List.objects.all().order_by('total_steps').reverse() #output = ''.join([(t.name+'\t'+str(t.total_steps)+'\n') for t in top_list]) return render(request,'steps_count/index.html',{'top_list': top_list}) 添加到设置文件中 CSRF_TRUSTED_ORIGINS = [ 'https://appname.herokuapp.com' ] 当您发现此类消息时,这意味着 CSRF 令牌丢失或不正确。所以你有两个选择。 对于 POST 表单,您需要确保: 您的浏览器正在接受cookie。 在模板中,每个针对内部 URL 的 POST 表单内都有一个 {% csrf_token %} 模板标记。 另一种简单的方法只是在设置选项卡中的 MIDDLEWARE_CLASSES 中注释一行(不推荐)('django.middleware.csrf.CsrfViewMiddleware')。 MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) 解决此问题的另一种最好的替代方法是使用 '@csrf_exempt' 注释。 使用 Django 3.1.1,您可以在您的方法中使用 @csrf_exempt。 from django.views.decorators.csrf import csrf_exempt @csrf_exempt def index(request): 并且您不需要在 html 中指定 {% csrf_token %}。 快乐学习.. 这里的一个常见错误是使用 render_to_response (这在旧教程中常用),它不会自动包含 RequestContext。渲染会自动包含它。 在按照教程创建新应用程序时了解了这一点,并且 CSRF 不适用于新应用程序中的页面。 在 HTML 标头中添加 <meta name="csrf_token" content="{{ csrf_token }}"> 然后在你的 JS/Angular 配置中: app.config(function($httpProvider){ $httpProvider.defaults.headers.post['X-CSRFToken'] = $('meta[name=csrf_token]').attr('content'); } 如果您使用 DRF,则需要添加 @api_view(['POST']) function yourFunctionName(data_1,data_2){ context = {} context['id'] = data_1 context['Valid'] = data_2 $.ajax({ beforeSend:function(xhr, settings) { function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } if (settings.url == "your-url") xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); }, url: "your-url", type: "POST", data: JSON.stringify(context), dataType: 'json', contentType: 'application/json' }).done(function( data ) { }); 如果您输入了{%csrf_token%},但仍然遇到同样的问题,请尝试更改您的角度版本。这对我有用。最初我在使用 Angular 1.4.x 版本时遇到了这个问题。在我将其降级为 Angular 1.2.8 后,我的问题得到了解决。不要忘记添加 angular-cookies.js 并将其放在您的 js 文件中。 如果您使用 post 请求。 app.run(function($http, $cookies) { console.log($cookies.csrftoken); $http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken; }); 1) {% csrf_token %} 不在模板中 - 或者 - 2) {% csrf_token %} 在 html 表单之外 使用装饰器: from django.views.decorators.csrf import csrf_exempt @csrf_exempt def method_name(): # body 确保您的浏览器接受 cookie。我遇到了同样的问题。 <form action="/steps_count/" method="post"> {% csrf_token %} Name: <input type="text" name="Name" /><br /> Steps: <input type="text" name="Steps" /><br /> <input type="submit" value="Add" /> </form> 检查对齐方式,表格内应留有一个空格。这就是几乎每个人都会犯错误的地方。 我在下面遇到了同样的错误: CSRF验证失败。请求已中止。 因为我没有在<form></form>中用method="post"设置csrf_token标签,如下图: <form action="{% url 'account:login' %}" method="post"> {% comment %} {% csrf_token %} {% endcomment %} ... </form> 所以,我在csrf_token中设置<form></form>标签和method="post"如下所示,然后错误就解决了: <form action="{% url 'account:login' %}" method="post"> {% csrf_token %} ... </form> 另外,无论你是否在csrf_token中设置了<form></form>标签,如下所示,都不会出现错误。 * method="get"只能将get和post请求方式设置为method,不能设置为<form></form>、head等,根据答案: put <form action="{% url 'account:login' %}" method="get"> {% comment %} {% csrf_token %} {% endcomment %} ... </form> CSRF(跨站点请求伪造)有助于防止对 Web 应用程序或网站的攻击。 Django 中的每个会话都有自己的令牌,当会话过期时,令牌将被销毁,您必须请求新令牌才能访问会话。在我的情况下,我的会话已结束,并且我已退出会话。我必须创建新的超级用户并再次登录。
对于我的注册和登录视图,我收到此错误 CSRF验证失败。请求被中止。 您看到此消息是因为此网站在提交表单时需要 CSRF cookie。这个饼干...
我目前正在开发 Django 项目。当我使用 CURL 发送 GET 请求时,它工作正常,但在 POST 请求的情况下,它会给我 500 内部错误。我认为它有一些东西...
如何使用 Axios 将 CSRF Cookie 从 React 发送到 Django Rest Framework
我想使用 Axios 从 React 应用程序向 Django Rest Framework 后端发出 POST 请求。我已经设法从后端获取 CSRF 令牌,但我无法通过我的请求发送它,所以我
Django Forbidden (403) CSRF 验证失败。请求中止
所以我对我的项目进行了部署,在我的网络使用 HTTPS 后,Django 现在向我显示了这个错误: 它发生在我的登录页面之后: 登录.html {% 加载 i18n 静态 bootstrap4 %} 所以我对我的项目进行了部署,在我的网络使用 HTTPS 后,Django 现在向我显示此错误: 它发生在我的登录页面之后: 登录.html {% load i18n static bootstrap4 %} <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="{% static 'web_site/css/login.css' %}" /> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script src="{% static 'web_site/js/login.js' %}"></script> </head> <body> <div class="wrapper"> <div class="container"> <h1>Welcome</h1> {% if context %} <ul class="messages"> <li class="error">{{ context }}</li> </ul> {% endif %} <form class="form" action="" method="post"> {% csrf_token %} {% bootstrap_form form %} <button type="submit" id="login-button">Login</button> </form> </div> <ul class="bg-bubbles"> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </body> </html> 在我的views.py中我已经有: 返回渲染(请求,“web_site\my_profile.html”,{“cool”:p}) 并在表单之后添加 csrf_token 我的观点.py: from django import template from django.contrib import messages from django.contrib.auth import authenticate from django.contrib.auth import login as auth_login from django.contrib.auth.decorators import login_required from django.contrib.auth.models import ContentType, Permission, User from django.shortcuts import render from django.urls import resolve from django.views.generic import TemplateView from django.contrib.auth.mixins import LoginRequiredMixin from .forms import FileForm class HomeView(LoginRequiredMixin, TemplateView): template_name = "web_site/home.html" @login_required def profile(request): p = Permission.objects.filter(user=request.user) return render(request, "web_site\my_profile.html", {"cool": p}) def upload_file(request): if request.method == "POST": form = FileForm(request.POST, request.FILES) if form.is_valid(): form.save() return HttpResponseRedirect("/") else: form = FileForm() return render(request, "web_site/file.html", {"form": form}) @login_required def list_app_tables(request): p = Permission.objects.filter(user=request.user) return render(request, "web_site\list_table_link.html", {"list": p}) 我该怎么办? TNX 伙计们 在尝试了多种选项后,我找到了正确的选项。 在setting.py中需要添加 CSRF_TRUSTED_ORIGINS = ['https://your-domain.com'] 现在可以使用了! 我希望它能帮助其他人。 在什么地方添加这一行...
使用 Cloudflare 迁移到 HTTPS 后出现 CORS 问题
我最近使用 Cloudflare 将 Django 项目迁移到 HTTPS。虽然它与 HTTP 完美配合,但我现在遇到了 CSRF 验证失败的情况。请求被中止。迁移后的问题。什...
当我尝试使用 Axios 请求中包含的凭据或使用 Postman 应用程序向服务器上托管的 DJANGO 应用程序发送 POST 请求时,我无法访问应用程序中的 cookie,因为 cookie
Django CSRF 以及来自不同域的 Angular 前端
我有一个 dockerized Django 后端,它使用 DRF、django cors 标头来允许通过本地主机与 Angular 应用程序进行通信。 docker-compose.yml 文件如下所示: 版本:“3.9”
大约三个月前,我将旧的 Django 和 CMS 应用程序升级到(当时)最新的 LTS 版本(Django 4.2.3,django-cms 3.11.3)。升级后,当我
铁路中部署的 Django 应用程序出现 CSRF 令牌问题,“CSRF 验证失败。请求中止。”
我收到的错误是“CSRF 验证失败。请求中止。” 错误图像 该网站工作正常,本地主机上没有任何问题 我尝试在我的 settings.py 中添加这个基本域,但是......
在 Azure Web App + 数据库 PostgreSQL 上运行的 Django 应用程序 - csrf 错误
我的应用程序正在 Azure 上运行,但我在登录页面上收到 csrf 错误。但是: 我的模板在元素中有 {% csrf_token %}: 我有'django.middleware.csrf.CsrfViewMiddleware',...
我正在开发一个应用程序,后端在 django 上,前端在 React 上。我现在面临的问题是csrftoken。我所有的表单都是使用普通浏览器提交的,但如果我使用
我这几天一直在努力做研究。我目前使用 Django 与 Django Rest_framework 和 django-allauth 来构建后端 API 和身份验证工作流程。一切
如何为两个 Django 应用程序之间的纯 REST API 通信设置 CSRF 令牌?
我有两个独立的后端,都是用 Django 构建的,我想相互通信。对 GET 端点的请求工作正常,但 POST 请求出现以下错误: 禁止(C...
HTMX / Django 表单列表 - CSRF 令牌问题?
我有一个应用程序,其中列出了一堆表单 - 它将 csrf_token 加载到每个表单中。 每个表单都是一个简单的下拉列表,用于为列表中的每个项目选择“颜色”。 我有一个清单...
Django 中的“CSRF 令牌丢失” - {% csrf_token %} 已包含在内
我一直在尝试制作一个简单的登录页面,并且我的表单正在提交,但是,我不断收到csrf失败。我曾尝试将标签放在几个地方,但没有任何效果。 我已经包括了...