laravel - 如何为 X-CSRF-TOKEN 启用生命周期活动状态
问题描述
我正在使用 laravel 5.4。在会话的 config/session.php 生命周期中超过 100 小时但是当我执行 ajax 请求时出现此错误
1) TokenMismatchException
in VerifyCsrfToken.php line 68
at VerifyCsrfToken->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
我在标题中添加了下面
<meta name="csrf-token" content="{{ csrf_token() }}" />
和
使用 javascript
var token = $('meta[name="csrf-token"]').attr('content');
获得令牌。
我不希望令牌永远过期。
要求的 Ajax 代码
var token = $('meta[name="csrf-token"]').attr('content');
$.ajax({
type: "POST",
url: path + '/load_free_data',
data: 'selected_day=' + day +'&opt=' + opt + '&_token=' + token ,
beforeSend : function()
{
$('.white-overlay').show();
},
success: function(e)
{
data = e.data;
}
});
解决方案
将其包含在 html 标头中
<meta name="csrf-token" content="{{ csrf_token() }}">
然后在包含 jquery script cdn include 之后,或者毕竟包含,
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
然后你可以使用你的 ajax 调用,它应该可以工作。
推荐阅读
- react-native - 为平面列表上的单个项目设置动画
- reactjs - 严重卡住 React Router 问题 URL 更改但未查看或渲染组件 || 反应||Redux
- html - 通过 google 电子表格发送 HTML 时事通讯电子邮件
- c# - selenium c#:如何在测试方法中跳过登录
- serial-port - CP2102 usb-ttl 在我关闭 minicom 之前不会传输数据
- python - 在 Python 中的类中定义多个列表变量的最佳方法
- javascript - index.js:28 未捕获的类型错误:无法读取 null 的属性“addEventListener”(在 toggleActiveOnClick 和 Array.forEach 中)
- r - lapply 带有可选函数参数和可选向量参数
- java - 从 Java 代码创建 AVD 设备。图书馆或其他解决方案
- c# - ASP.Net core Razor Class Libray 解析视图顺序