django-csrf 相关问题

django-csrf是Django的跨站点请求伪造(CSRF)保护中间件。

Forbidden 403 前端与 django python 后端发生反应

我需要有关此错误的帮助 这是来自后台的消息: 禁止(来源检查失败 - http://localhost:3000 与任何受信任的来源不匹配。):/user/login/ [2024 年 3 月 4 日 18:17:23] &...

回答 2 投票 0

如何使用 requests python 库在 django 视图中调用 api 端点

这是我对登录功能的看法 类登录视图(视图): def get(自身, 请求): 返回渲染(请求,'login.html') def post(自我,请求): print('在帖子中...

回答 1 投票 0

管理面板的 Django CSRF 验证失败

我开始了一个新的 Django 1.11 项目,其中包含一个应用程序、一个模型和一个管理面板。在本地,一切正常。当我将其部署到 Amazon EC2 并尝试登录管理面板时,我收到 403 (CSRF

回答 3 投票 0

django.security.csrf:禁止(来源检查失败 - https://sentry.domain.com 与任何可信来源不匹配。)

django.security.csrf:禁止(来源检查失败 - https://sentry-domain.com 与任何可信来源不匹配。) 我从 https://github.com/getsentry/self-

回答 1 投票 0

CSRF 验证失败。请求中止

我尝试构建一个非常简单的网站,可以在其中将数据添加到 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 中的每个会话都有自己的令牌,当会话过期时,令牌将被销毁,您必须请求新令牌才能访问会话。在我的情况下,我的会话已结束,并且我已退出会话。我必须创建新的超级用户并再次登录。

回答 16 投票 0

CSRF验证失败

对于我的注册和登录视图,我收到此错误 CSRF验证失败。请求被中止。 您看到此消息是因为此网站在提交表单时需要 CSRF cookie。这个饼干...

回答 1 投票 0

Django POST 方法给出 500 内部服务器错误

我目前正在开发 Django 项目。当我使用 CURL 发送 GET 请求时,它工作正常,但在 POST 请求的情况下,它会给我 500 内部错误。我认为它有一些东西...

回答 3 投票 0

如何使用 Axios 将 CSRF Cookie 从 React 发送到 Django Rest Framework

我想使用 Axios 从 React 应用程序向 Django Rest Framework 后端发出 POST 请求。我已经设法从后端获取 CSRF 令牌,但我无法通过我的请求发送它,所以我

回答 2 投票 0

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'] 现在可以使用了! 我希望它能帮助其他人。 在什么地方添加这一行...

回答 2 投票 0

使用 Cloudflare 迁移到 HTTPS 后出现 CORS 问题

我最近使用 Cloudflare 将 Django 项目迁移到 HTTPS。虽然它与 HTTP 完美配合,但我现在遇到了 CSRF 验证失败的情况。请求被中止。迁移后的问题。什...

回答 1 投票 0

Django 服务器不接受 cookies

当我尝试使用 Axios 请求中包含的凭据或使用 Postman 应用程序向服务器上托管的 DJANGO 应用程序发送 POST 请求时,我无法访问应用程序中的 cookie,因为 cookie

回答 1 投票 0

Django CSRF 以及来自不同域的 Angular 前端

我有一个 dockerized Django 后端,它使用 DRF、django cors 标头来允许通过本地主机与 Angular 应用程序进行通信。 docker-compose.yml 文件如下所示: 版本:“3.9”

回答 1 投票 0

由于跨源错误,无法在 Django CMS 中编辑任何内容

大约三个月前,我将旧的 Django 和 CMS 应用程序升级到(当时)最新的 LTS 版本(Django 4.2.3,django-cms 3.11.3)。升级后,当我

回答 1 投票 0

铁路中部署的 Django 应用程序出现 CSRF 令牌问题,“CSRF 验证失败。请求中止。”

我收到的错误是“CSRF 验证失败。请求中止。” 错误图像 该网站工作正常,本地主机上没有任何问题 我尝试在我的 settings.py 中添加这个基本域,但是......

回答 2 投票 0

在 Azure Web App + 数据库 PostgreSQL 上运行的 Django 应用程序 - csrf 错误

我的应用程序正在 Azure 上运行,但我在登录页面上收到 csrf 错误。但是: 我的模板在元素中有 {% csrf_token %}: 我有'django.middleware.csrf.CsrfViewMiddleware',...

回答 1 投票 0

CSRFTOKEN 未在隐身模式下定义

我正在开发一个应用程序,后端在 django 上,前端在 React 上。我现在面临的问题是csrftoken。我所有的表单都是使用普通浏览器提交的,但如果我使用

回答 1 投票 0

Django CRSF 跨不同来源的登录请求

我这几天一直在努力做研究。我目前使用 Django 与 Django Rest_framework 和 django-allauth 来构建后端 API 和身份验证工作流程。一切

回答 1 投票 0

如何为两个 Django 应用程序之间的纯 REST API 通信设置 CSRF 令牌?

我有两个独立的后端,都是用 Django 构建的,我想相互通信。对 GET 端点的请求工作正常,但 POST 请求出现以下错误: 禁止(C...

回答 1 投票 0

HTMX / Django 表单列表 - CSRF 令牌问题?

我有一个应用程序,其中列出了一堆表单 - 它将 csrf_token 加载到每个表单中。 每个表单都是一个简单的下拉列表,用于为列表中的每个项目选择“颜色”。 我有一个清单...

回答 1 投票 0

Django 中的“CSRF 令牌丢失” - {% csrf_token %} 已包含在内

我一直在尝试制作一个简单的登录页面,并且我的表单正在提交,但是,我不断收到csrf失败。我曾尝试将标签放在几个地方,但没有任何效果。 我已经包括了...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.