当前位置: 首页 > 知识库问答 >
问题:

Laravel X-CSRF-Token与邮差不匹配

贲骏喆
2023-03-14

我尝试与使用Laravel构建的REST API对话。但由于令牌不匹配,与邮递员的通话被拒绝。我想我需要在标题中包含CSRF标记。但我需要加密的吗?当我插入这个令牌时,仍然会得到一个错误,即存在令牌不匹配。

我使用以下方法检索令牌:

$encrypter = app('Illuminate\Encryption\Encrypter');
$encrypted_token = $encrypter->encrypt(csrf_token());
return $encrypted_token;

但每次刷新时都应该改变吗?

共有3个答案

商开宇
2023-03-14

使用Postman对任何包含代码的页面发出GET请求

在POST请求中添加标题字段:

"X-CSRF-TOKEN: "copied_token_in_previous_get_response"
赵奕
2023-03-14

是的,它每次刷新都会更改。您应该将其放在视图中,当您发布时,它需要作为“_token”POST var的值发送。

如果您只是使用标准帖子,只需在表单中添加以下内容:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

如果您使用的是AJAX,请确保获取\u令牌的值并将其与请求一起传递。

裁判:http://laravel.com/docs/5.1/routing#csrf-保护

酆鸿彩
2023-03-14

如果您没有使用表单(例如,对于API),可以按照以下步骤操作https://gist.github.com/ethanstenis/3cc78c1d097680ac7ef0:

基本上,将以下内容添加到刀片或细枝标题中

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

如果尚未安装,请安装Postman拦截器,并将其打开

然后,在浏览器中登录站点(您需要获得授权),然后检查元素或查看源以检索令牌

在Postman中,根据需要设置GET/POST等,并在标题中创建一对新的

X-CSRF-TOKEN        tokenvaluetobeinserted235kwgeiOIulgsk

有些人建议在测试API时关闭CSRF令牌,但实际上并不是在测试它。

如果确实发现仍有错误,请使用预览来检查响应,因为Laravel倾向于非常明确地显示错误消息。如果没有返回任何内容,请检查您的php\u错误。日志(无论它叫什么)。

ps Oct 2018-我现在使用Laravel Passport来处理API注册、登录和用户令牌-值得一看!

 类似资料:
  • 问题内容: 我试图通过ajax从数据库中删除数据。 HTML: 我的ajax代码: 这是我从数据库中获取数据的查询… 但是当我单击删除链接数据未删除并显示csrf_token不匹配… 问题答案: 您必须在ajax请求中添加 数据 。我希望这样会有用。

  • 我已经用html登录表单记录了基本的Apache Jmeter场景,它使用csrf令牌。 应用程序记录的示例令牌如下所示: 到目前为止,我不能得到什么是错误的,非常简单的场景,但有一个问题。我使用的是apache JMeter3.1。

  • 我遵循指南:http://spring.io/guides/gs/rest-service/构建我的Rest服务示例,现在我正在尝试启用CSRF保护。我读到它应该默认启用,所以如果我不包括: http。csrf()。禁用() 在我的配置中,默认情况下应该启用CSRF保护,但情况似乎并非如此。问题是X-CSRF-TOKEN没有生成,也没有以任何方式包含在我的HTTP响应中。我应该怎么做,生成x-cs

  • 我刚刚创建了一个全新的Laravel6项目,安装了Passport功能(LaravelPassport),并想尝试一下。现在,在Postman中,我尝试访问缺省路由POST/oauth/clients,按预期填充名称并重定向参数。 在这一点上,我将得到一个“CSRF令牌不匹配”错误,我在这里会做错什么?我知道这是一个非常有限的信息继续下去,如果需要更多的问了。 运行Laravel网站与'php工匠

  • 我在Laravel5.2中遇到AJAX POST请求问题。我正在AJAX请求中传递一个有效的CSRF令牌。 使用Laravel Collective HTML package form标记打开和关闭表单,该标记会自动添加一个带有CSRF标记的隐藏标记输入。呈现的HTML: 使用Fetch API和FormData执行AJAX请求: CSRF令牌和表单数据位于请求负载中: 请求有效负载和x-csrf

  • 问题内容: 做一个简单的测试时,我就在用Java编写正则表达式 但是在JavaScript中 这里发生了什么?我可以使我的Java regex模式“ q”的行为与JavaScript相同吗? 问题答案: 在JavaScript中,返回与使用的正则表达式匹配的子字符串。在Java中,检查整个字符串是否与正则表达式匹配。 如果要查找与正则表达式匹配的子字符串,请使用Pattern和Matcher类,例