天道酬勤,学无止境

如何修复在控制台上找不到的 CSRF 令牌(how to fix CSRF token not found on console)

问题

如何修复在 Laravel 5.4 上找不到的 CSRF 令牌,我尝试在 Laravel 中学习 vue js,但我的控制台中出现错误“找不到 CSRF 令牌”,请帮助我如何解决此错误。

回答1

您可以添加以下元标记

<meta name="csrf-token" content="{{ csrf_token() }}">
回答2

如果您正在使用 Vue,请按以下方式操作:

Vue.http.interceptors.push(function (request, next) {
request.headers['X-CSRF-TOKEN'] = Laravel.csrfToken;
next();
});

要么

<script>
window.Laravel = <?php echo json_encode([
    'csrfToken' => csrf_token(),
]); ?>
</script>
回答3

1)这个错误来自哪里?

这个错误来自resources/js/bootstrap.js

2)为什么会出现这个错误?

见下面的片段,它试图找出名称 csrf-token 的元标记,如果找到令牌,则将其作为标头添加到 axios http library.else 显示错误

let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

3)什么是解决方案?

VerifyCsrfToken中间件将检查X-CSRF-TOKEN请求标头。

您可以将令牌存储在 HTML 元标记中:

<meta name="csrf-token" content="{{ csrf_token() }}">

它将生成如图所示的令牌:

对于 Ajax 请求:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

对于 VueJS 2.0 :

Vue.http.headers.common['X-CSRF-TOKEN'] = document.head.querySelector('meta[name="csrf-token"]').content;

阅读有关 CSRF 令牌的更多信息:https://laravel.com/docs/5.8/csrf

回答4

如果您正在使用

let token = document.head.querySelector('meta[name="csrf-token"]');

尝试使用

let token = document.querySelector('meta[name="csrf-token"]');

基本上您的脚本无法使用 csrf-token 读取元标记,在这种情况下,这应该可以工作。

回答5

如果你用半列结束@section ,也可能是一个问题。 就像发生在我身上的事情一样

@endsection;

这导致了错误。 当我把它改成

@endsection

错误消失了。

回答6

或者,您可以简单地在$except数组中传递 URl,以从 CSRF 验证中排除该 URL。

文件

app/Http/Middleware/VerifyCsrfToken.php

像这样

 protected $except = [
        "readPDF/*",
    ];

此解决方案仅适用于需要从 csrf 验证中排除特定 URL 时,因此请谨慎使用。

回答7

在您的bootstrap.js文件中替换这一行document.head.querySelector('meta[name="csrf-token"]'); 通过$('meta[name="csrf-token"]').attr('content');

这将是

let token = $('meta[name="csrf-token"]').attr('content');
if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x- 
    csrf-token');
}

这也解决了 vue 组件中有表单时的 post-axios 请求。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 为 json rails 调用禁用 csrf 令牌是否安全?(security safe to disable csrf tokens for json rails calls?)
    问题 我有一个现有的 rails 后端网站,它对服务器进行 json 调用。 现在,我正在开发一个移动 iOS 应用程序以使用相同的后端并在 json 中发送调用。 但是,移动请求失败: WARNING: Can't verify CSRF token authenticity 搜索 stackoverflow,许多人建议使用以下内容禁用对 json 调用的 csrf 检查: # Or this in your application_controller.rb def verified_request? if request.content_type == "application/json" true else super() end end 但我的问题是,我不明白这如何防止 json 格式的 csrf 攻击? 攻击者始终可以从他们的站点向我们的端点发送 json 请求。 任何人都有这方面的见解? 我找不到任何明确的答案。 回答1 您所描述的内容使用 Flash 很容易被利用: var request:URLRequest = new URLRequest("http://stackoverflow.com"); request.requestHeaders.push(new URLRequestHeader('Content-Type', 'application/json'
  • 服务器迁移后,在 CakePHP3 中的请求数据中找不到 '_Token'('_Token' was not found in request data in CakePHP3 after server migration)
    问题 编辑: 在问这个问题后获得的一系列新见解告诉我问题是什么,它绝对与所描述的服务器迁移没有任何关系。 给出的两个答案显示了如何为 CakePHP 2 和 3“修复”此问题,但请记住,这可能会带来安全风险。 CSRF 组件是一项重要的安全功能,不应轻易禁用。 原问题: 我将我的 CakePHP 3 项目从笔记本电脑上的 XAMPP 迁移到服务器上的 XAMPP。 从那时起,当我激活安全组件时,cake 会向我抛出错误。 这是直接来自错误日志: 2016-05-21 20:32:01 Error: [Cake\Controller\Exception\AuthSecurityException] '_Token' was not found in request data. Request URL: /Users/addUser Referer URL: http://localhost/users/add_user Stack Trace: #0 C:\xampp\htdocs\vendor\cakephp\cakephp\src\Controller\Component\SecurityComponent.php(324): Cake\Controller\Component\SecurityComponent->_validToken(Object(App
  • 无法验证提供的CSRF令牌,因为在春季安全性中找不到您的会话(Could not verify the provided CSRF token because your session was not found in spring security)
    问题 我正在使用Spring Security和Java Config @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/api/*").hasRole("ADMIN") .and() .addFilterAfter(new CsrfTokenResponseHeaderBindingFilter(), CsrfFilter.class) .exceptionHandling() .authenticationEntryPoint(restAuthenticationEntryPoint) .and() .formLogin() .successHandler(authenticationSuccessHandler) .failureHandler(new SimpleUrlAuthenticationFailureHandler()); 我正在使用PostMan测试我的REST服务。 我成功获得了“ csrf令牌”,并且能够在请求标头中使用X-CSRF-TOKEN进行登录。 但是登录后,当我点击发布请求时(我在用于登录发布请求的请求标头中包含了相同的令牌),我收到以下错误消息: HTTP状态403
  • 对抗Asp.Net WebApi的Angular,在服务器上实现CSRF(Angular against Asp.Net WebApi, implement CSRF on the server)
    问题 我正在Angular.js中实现一个网站,该网站访问了ASP.NET WebAPI后端。 Angular.js具有一些内置功能,可帮助进行反csrf保护。 在每个http请求上,它将查找名为“ XSRF-TOKEN”的cookie,并将其作为名为“ X-XSRF-TOKEN”的标头提交。 这依赖于Web服务器能够在对用户进行身份验证之后设置XSRF-TOKEN cookie,然后检查X-XSRF-TOKEN标头中是否有传入请求。 Angular文档指出: 要利用此优势,您的服务器需要在第一个HTTP GET请求上的名为XSRF-TOKEN的JavaScript可读会话cookie中设置令牌。 在随后的非GET请求中,服务器可以验证cookie是否与X-XSRF-TOKEN HTTP标头匹配,因此可以确保只有在您的域上运行的JavaScript才能读取令牌。 令牌对于每个用户必须是唯一的,并且必须可由服务器验证(以防止JavaScript编写自己的令牌)。 我们建议该令牌是您的站点身份验证Cookie的摘要,并添加盐,以增强安全性。 我找不到针对ASP.NET WebAPI的任何良好示例,因此在各种来源的帮助下,我自己编写了自己的示例。 我的问题是-任何人都看不到代码有什么问题吗? 首先,我定义了一个简单的帮助程序类: public class CsrfTokenHelper
  • 如何在表单的 AJAX 发布请求中传递 CSRF 令牌?(How to pass along CSRF token in an AJAX post request for a form?)
    问题 我正在使用 Scala Play! 2.6 框架,但这可能不是问题。 我正在使用他们的 Javascript 路由 - 它似乎工作正常,但它有问题。 我有一个表单,它在呈现时会产生这个,带有一个 CSRF 令牌: <form method="post" id="myForm" action="someURL"> <input name="csrfToken" value="5965f0d244b7d32b334eff840...etc" type="hidden"> <input type="text" id="sometext"> <button type="submit"> Submit! </button> </form> 这是我的 AJAX: $(document).on('submit', '#myForm', function (event) { event.preventDefault(); var data = { textvalue: $('#sometext').val() } var route = jsRoutes.controllers.DashboardController.postNewProject() $.ajax({ url: route.url, type: route.type, data : JSON.stringify(data)
  • AJAX 帖子不向 Laravel 控制器发送数据(AJAX post not sending data to laravel controller)
    问题 也许这是一个非常常见的话题,但我找不到任何解决方案!,我正在开发的应用程序在 Laravel 5.0 下,我需要将一些数据从 jquery ajax发送到 Laravel控制器,我已经按照本教程使用ajax发布数据,我已经按照步骤进行了全局配置,这样我就有了一个带有csrf令牌的元数据,当我使用ajax将发布请求发送到一个url时,它只发送令牌!! 但我没有给它发送任何数据! 这是我的 ajax func(我正在使用虚拟数据来测试它): $.ajax( { url : '/reservacion/paso-uno/enviar', method : 'post', data : { name: "John", location: "Boston" } } ); 但是当我dd(\Request::all()); 在 post func 我只得到令牌,如果我检查标题表单数据,我只得到这个: 这是标题的完整图像: 这是带有 csrf 的元标记: <meta name="_token" content="{{{ csrf_token() }}}"/> 这是全局ajax设置: $.ajaxSetup({ headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') } }); 大更新 不知道为什么,也不知道如何
  • 带有CSRF的Playframework:“在会话中找不到CSRF令牌”?(Playframework with CSRF : “CSRF token not found in session”?)
    问题 我正在使用 Playframework 及其内置 CSRF 过滤器和 Security.Authenticator 系统制作一个简单的身份验证系统,但我面临一个问题: 当用户填写他的登录名/密码并提交输入时,我有以下错误: 在会话中找不到 CSRF 令牌 我检查了我的表单,CSRF 令牌确实存在并且正确放置(在标签内) 这是我的routes : GET /login controllers.Authentication.login POST /login controllers.Authentication.authenticate 我的Authentication.java类: @play.filters.csrf.AddCSRFToken public static Result login() { if (Session.getAccount() != null) { return redirect(controllers.routes.Instances.list()); } LoginForm loginForm = new LoginForm(); if (ctx().session().containsKey("email")) { loginForm.setEmail(ctx().session().get("email")); } if (request()
  • rails 会话被间歇性重置(rails session being reset intermittently)
    问题 我知道这个话题已经讨论了很多,但我相信我发现了它的一个新变体:我有一个 Rails 4 应用程序,它是从 Rails 3 升级的,并且正确设置了rails_ujs和csrf_meta_tags 。 一旦在浏览器中加载了root_url ,就会有一个 javascript 触发一个 GET 和一个 PUT,每个都到应用程序中各自的控制器 API。 当这 2 个 API 调用被触发时,会话应该在那里有_csrf_token 。 大多数时候这是真的。 继续阅读。 问题是,有时,并非总是如此,我们会看到 PUT 请求发生了一些 InvalidAuthenticityToken 异常。 (是的,我在我们的 API 基础控制器上使用了protect_from_forgery :with => :exception )。 分析来自exception_notification的转储,我可以看到在请求标头中正确设置了CSRF_TOKEN ,但最有趣的是会话只有session_id 。 其他一切都消失了,包括_csrf_token 。 请记住:这是间歇性发生的! 所以我相信它一定是某种竞争条件。 此应用程序托管在 Heroku 上并在 Unicorn 上运行。 我无法在本地环境中重现该问题。 我还在 github 上阅读了很多 Rails 代码,试图了解它重置会话的流程,但我找不到答案,因为所有
  • 找不到预期的CSRF令牌。 您的会话已过期403(Expected CSRF token not found. Has your session expired 403)
    问题 我正在尝试使用mkyong示例编写测试Spring Security应用程序。 Spring Security: 4.0.0.RC1 Spring: 4.1.4.RELEASE 我有以下安全配置: <http auto-config="true"> <intercept-url pattern="/admin**" access="hasRole('ADMIN')"/> <form-login authentication-failure-url="/?auth_error" username-parameter="user" password-parameter="password" login-page="/" default-target-url="/?OK"/> <!-- <csrf/> --> </http> <authentication-manager> <authentication-provider> <user-service> <user name="mkyong" password="123456" authorities="ADMIN" /> </user-service> </authentication-provider> </authentication-manager> 登录页面: <html> <body> <form method=
  • Laravel 5.5 Ajax呼叫419(未知状态)(Laravel 5.5 ajax call 419 (unknown status))
    问题 我进行了ajax调用,但始终出现此错误: 419(未知状态) 不知道是什么原因造成的,我在其他帖子上看到了它必须使用csrf令牌执行某些操作,但是我没有表格,所以我不知道如何解决此问题。 我的电话: $('.company-selector li > a').click(function(e) { e.preventDefault(); var companyId = $(this).data("company-id"); $.ajax({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, url: '/fetch-company/' + companyId, dataType : 'json', type: 'POST', data: {}, contentType: false, processData: false, success:function(response) { console.log(response); } }); }); 我的路线: Route::post('fetch-company/{companyId}', 'HomeController@fetchCompany'); 我的控制器方法 /** * Fetches a company * *
  • 如何在Laravel中禁用CSRF令牌,为什么我们必须禁用它?(How to disable CSRF Token in Laravel and why we have to disable it?)
    问题 我想看看如何在Laravel中禁用CSRF令牌以及必须在哪里禁用它。 禁用它是否好? 回答1 您可以通过编辑在一些路由上禁用CSRF。 App\Http\Middleware\VerifyCsrfToken 并在protected中添加您自己的路线名称 $except = [] array. 这似乎不是一个好习惯,因为这样做将删除Laravel的安全性功能。 回答2 许多人解释了如何做到这一点,但他们没有解释url的外观。 编辑app / Http / Middleware / VerifyCsrfToken.php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * Indicates whether the XSRF-TOKEN cookie should be set on the response. * * @var bool */ protected $addHttpCookie = true; /** * The URIs that should be excluded from CSRF verification
  • Django CSRF令牌+ Angular.js(Django csrf token + Angularjs)
    问题 我在使用mod_wsgi的apache服务器上运行了django,以及由apache(而不是django)直接提供服务的angularjs应用程序。 我想对django服务器进行POST调用(运行rest_framework),但是我在使用csrf令牌时遇到了问题。 是否可以通过{% csrf token %}在不将{% csrf token %}作为模板一部分的情况下从服务器设置令牌(因为这些页面没有经过django)? 我希望能够通过GET请求以Cookie的形式获取csrf令牌。 我希望能够使用csrf令牌cookie值向django服务器发出POST请求。 回答1 Django和AngularJS都已经有CSRF支持,您的工作很简单。 首先,您需要在Django中启用CSRF,我相信您已经这样做了,如果没有,请遵循Django doc https://docs.djangoproject.com/en/1.5/ref/contrib/csrf/#ajax。 现在,Django将在第一个GET请求上设置一个名为csrftoken的cookie,并期望在以后的POST / PUT / DELETE请求上使用自定义HTTP标头X-CSRFToken 。 对于Angular,它期望名为XSRF-TOKEN的cookie并使用X-XSRF-TOKEN标头执行POST / PUT
  • 将CSRFToken添加到Ajax请求(Adding CSRFToken to Ajax request)
    问题 我需要将CSRFToken与基于Ajax的帖子请求一起传递,但不确定如何才能以最佳方式完成。 使用内部检查请求中的CSRFToken的平台(仅POST请求) 最初我想将其添加到标题中 $(function() { $.ajaxSetup({ headers : { 'CSRFToken' : getCSRFTokenValue() } }); }); 这将使其可用于每个Ajax请求,但不适用于我的情况,因为在请求中CSRFToken仍为null。 有什么办法可以为所有处理POST类型的Ajax调用设置CSRFToken 编辑如果我在Ajax调用中执行了类似的操作 data: {"newsletter-subscription-email" : "XXX" , 'CSRFToken': getCSRFTokenValue()}, 一切正常。 我的问题是,我想将CSRFToken值作为请求参数而不是请求标头传递 回答1 这个怎么样, $("body").bind("ajaxSend", function(elm, xhr, s){ if (s.type == "POST") { xhr.setRequestHeader('X-CSRF-Token', getCSRFTokenValue()); } }); 参考:http://erlend.oftedal.no/blog/
  • 正确设置 Laravel 5 CSRF 令牌的标头(Correctly set headers for Laravel 5 CSRF Token)
    问题 好吧,已经搜索了几个小时,只是找不到解决方案的开始。 我正在使用带有 Laravel 后端的 angularJS 前端。 Restangular 是我的通讯服务。 我的 POST 很好,因为我可以在数据中包含 _token 并且它会起作用。 但是对于 Restangular 调用销毁函数,它看起来像...... Restangular.all('auth/logout').remove(); //maps to AuthController@Destroy 一切都很好,但是你会得到一个 TOKENMISMATCH 异常,这是一个很好的安全措施 由于我找不到将 _token 包含到删除中的方法,因为它本质上是无正文的,所以我决定将令牌放在标题中。 RestangularProvider.setDefaultHeaders({'X-XSRF-TOKEN': CSRF_TOKEN}); //CSRF_TOKEN gathered elsewhere 在 Chrome dev tolos 之外,我可以看到标题设置为 X-XSRF-TOKEN:ClkQIRLpFQgMg8ZT6X5CF6doCplRfdJzW8msx2JI X-XSRF-TOKEN正是VerifyCrsfToken.php 正在寻找的东西。 然而,它吐出一个解密错误。 任何其他令牌名称,例如 XSRF-TOKEN、
  • 使用Spring Security 3.2.0.RELEASE,如何在没有标签库的纯HTML页面中获取CSRF令牌(With Spring Security 3.2.0.RELEASE, how can I get the CSRF token in a page that is purely HTML with no tag libs)
    问题 今天,我从具有单独的java config依赖项的Spring Security 3.1.4升级到了包含Java config的新3.2.0版本。 默认情况下,CSRF是打开的,我知道可以使用“ http.csrf()。disable()”在覆盖的configure方法中将其禁用。 但是假设我不想禁用它,但是我需要在登录页面上使用CSRF令牌,该页面上没有使用JSP标记库或Spring标记库。 我的登录页面是纯HTML,可用于使用Yeoman生成的Backbone应用中。 如何将HttpSession中包含的CSRF令牌以表格或标头的形式包含在内,这样我就不会收到“找不到期望的CSRF令牌。您的会话是否已过期?” 例外? 回答1 您可以使用参考文献中概述的名为_csrf的请求属性来获取CSRF。 要将CSRF添加到HTML页面,您将需要使用JavaScript来获取需要包含在请求中的令牌。 将令牌作为标头返回比作为JSON在正文中返回更安全,因为正文中的JSON可以通过外部域获取。 例如,您的JavaScript可以请求由以下内容处理的URL: CsrfToken token = (CsrfToken) request.getAttribute("_csrf"); // Spring Security will allow the Token to be included
  • Grails-是否有推荐的方法来处理AJAX形式的CSRF攻击?(Grails - Is there a recommended way of dealing with CSRF attacks in AJAX forms?)
    问题 我将同步器令牌模式用于标准格式(useToken = true),但是我找不到通过AJAX处理此问题的任何推荐方法。 编辑 自发布此文档以来,我已经从上面推出了自己的解决方案,其中结合了Grails现有的模式。 在jQuery ajax中,我发布了整个表单(其中将包括Grails注入的SYNCHRONIZER_TOKEN和SYNCHRONIZER_URI隐藏字段),以便withForm闭包可以在控制器中按预期执行。 问题是,在成功响应后,没有设置新的令牌(因为未重新加载页面并且未引发g:form taglib),因此我在控制器中手动执行此操作,调用与g:form相同的库taglib,并在ajax响应中返回它,然后重置隐藏字段值。 见下文: var formData = jQuery("form[name=userform]").serializeArray(); $.ajax({ type: 'POST', url: 'delete', data: formData, success: function (data) { // do stuff }, complete: function (data) { // Reset the token on complete $("#SYNCHRONIZER_TOKEN").val(data.newToken); } }) 在控制器中
  • Symfony 2使用不带类的表单时添加CSRF令牌(Symfony 2 Add CSRF Token when using a form without a class)
    问题 首先,我是Symfony 2的一个完整的菜鸟。这个问题听起来很简单,如果我尝试在某些背景下说明为什么以及如何需要它,它将开始变得混乱。 本质上,我已经创建了一个表单,我可以使用Doctrine等手动处理,验证和插入表单。我是在控制器动作中手动创建表单(它是从另一个对象的检索值中动态生成的)。 我以为可能会有更好的方法来进行此操作,但是由于我是Symfony的新手,并且几天不停地拖网,所以我看不到任何解决方案。 因此,我并不是简单地针对类/实体等构建表单,因此我将需要手动添加CSRF令牌或某种保护。 在正常情况下,您将创建FormType并将默认选项配置为具有csrf_protection。 然后是一个简单的情况: {{ form_widget(form._token) }} 并且csrf令牌在那里。 在动态构建表单时,我不确定如何为表单手动创建csrf令牌。 有没有人有没有类创建表单和添加csrf保护的经验? 亲切的问候保罗·庞德 回答1 在正常的情况下,您会创建一个表单并没有专门配置form_rest(form)它会自动发生,并且您使用form_rest(form)或form_end(form)来使用CSRF令牌呈现隐藏的输入。 我认为对于没有模型支持的表单,这没有什么不同。 回答2 我认为您正在寻找以下内容: 这将呈现CSRF令牌。 如果要CSRF保护而不创建表单
  • Thymeleaf的Spring Security的简单示例(Simple example of Spring Security with Thymeleaf)
    问题 嗨,我正在尝试按照一个简单的示例来做一个简单的登录表单页面,该页面在此页面http://docs.spring.io/autorepo/docs/spring-security/4.0.x/guides/form.html找到 问题是,每次尝试登录时我都会收到此错误,但我收到此错误: Expected CSRF token not found. Has your session expired? Expected CSRF token not found. Has your session expired? 当我收到此错误时,我按浏览器中的“后退”按钮,并尝试第二次登录,当我这样做时,收到此错误: HTTP 403 - Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN' 在教程页面中是以下消息: We use Thymeleaf to automatically add the CSRF token to our form. If we were not using Thymleaf or Spring MVCs taglib we could also manually add the CSRF token using <input
  • ASP.NET Core WebAPI 安全注意事项(ASP.NET Core WebAPI Security Considerations)
    问题 我的 WebAPI 就是一个 API 后端,供我的 UI 使用。 事实上,我的 UI 可能会使用 10 个 WebAPI 服务。 我很难理解我在安全方面需要考虑什么。 我的 API 使用不记名令牌进行保护,并且仅允许使用 https。 我设置了 CORS,它们只允许源https://my-front.end这一切都很好。 但是.. 我怎样才能防止对 WebAPI 的 C/XSRF 和重放攻击? 我什至需要吗? 使用 ASP.NET MVC 项目设置反 CSRF 是相当轻松的,但是您如何在 WebAPI 上做到这一点,据我所知,它依赖于将在服务器上生成的信息发送到客户端以在请求的主体并通过另一个通道(例如 cookie 或标头)。 我读到您可以通过使用随机数(例如时间戳和随机数)来防止重放攻击 - 一些方法 - 但找不到任何实现示例。 还有什么我需要考虑的吗? 编辑:前端使用 vue.js,但我们有一个非常称职的 JS 程序员,所以任何前端实现都不会成为问题。 这只是一个找出需要做什么样的事! 可能还值得注意的是,为了显而易见,WebAPI 和 FrontEnd 运行在不同的服务器上,因此这些都是有效的跨源调用。 回答1 好吧。 首先,您需要在标头中发送 XSRF 令牌。 为此,您需要转到 ConfigureServices 方法并设置 AntiForgery 服务以期待此标头
  • 将 Django 与 postman {“detail”:“CSRF 失败:CSRF 令牌丢失或不正确。”}(Using django with postman {“detail”:“CSRF Failed: CSRF token missing or incorrect.”})
    问题 我正在使用邮递员检查来自我的 django-rest-framework 的 json 响应。 当我第一次尝试通过 POST 方法将 id、电子邮件、密码发布到我在 AWS(亚马逊网络服务)上的 django 时,它运行良好。 它返回如下: { "key": "99def123123123123d88e15771e3a8b43e71f" } 但是在第一次尝试之后,换句话说,从第二次尝试它返回 {"detail":"CSRF Failed: CSRF token missing or incorrect."} (另外编辑+)我的腻子终端说"POST /rest-auth/login/ HTTP/1.1" 403 58 我看到了http://kechengpuzi.com/q/s31108075,但它不适合我的情况。 从 http://django-rest-framework.narkive.com/sCyJk3hM/authentication-ordering-token-vs-session,我找不到使用邮递员的解决方案 如何正确使用邮递员? 或者你能推荐其他工具使用吗? 我正在使用retrofit2制作android应用程序所以我需要工具来检查POST、GET方法和响应。 回答1 您的 api 需要 CSRF 令牌,您必须将 CSRF 令牌添加到请求(和邮递员):