php - 在标头中发送令牌时,Laravel TokenMismatch Exception
问题描述
我在发出 ajax 请求时在标头中发送CSRF令牌。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': getCookie("XSRF-TOKEN")
}
});
在上面的代码中,我从“ XSRF-TOKEN
”cookie 中获取令牌,并在“ X-CSRF_TOKEN
”标头中为所有 ajax 请求全局设置。
我已经在 chrome 开发人员工具中检查了这个标头正在被发送。
但是Laravel仍然会抛出TokenMismatch异常。
请注意,我无法从 html 之类的元标记或输入字段中获取令牌,因为正在缓存 html 内容,因此我想设置使用 laravel 在每个响应中设置的“XSRF-TOKEN”cookie。
解决方案
Laravel 生成的 tokencsrf_token()
和 cookie 中设置的 token 不一样。
现在的问题是“X-CSRF-TOKEN”标头用于发送csrf_token()
函数生成的令牌。
因此,如果您想发送从 cookie 获得的 csrf 令牌,您应该使用“X-XSRF-TOKEN”标头。
因此上面的代码应该像
$.ajaxSetup({
headers: {
'X-XSRF-TOKEN': getCookie("XSRF-TOKEN")
}
});
推荐阅读
- asp.net-web-api - 当通过浏览器请求时,API 返回一个空对象数组。同样的请求在邮递员中工作正常
- php - 从 laravel 中的数据透视表中获取所有数据
- google-apps-script - 基于时间的触发器创建而是立即执行函数
- docker - 如何让我的 .net core 2.1 Web 应用在 2 个端口上监听
- html - 响应式表中的响应式第一列
- progressive-web-apps - 如何从其他原生应用打开我的 PWA 应用?
- solr - 应用架构文件谜题后缺少 2 个字段
- java - 应用程序窗口错误“插件“org.eclipse.wb.core.ui”无法实例化类”
- javascript - 我如何在 LokiJS DB 中创建索引?
- android-studio - Android Studio - 视频奖励有效,但没有更多回调 - 可能出现故障?