【发布时间】:2016-07-04 09:49:18
【问题描述】:
我有一个公共表单,它在 jquery onchange 事件上发送 Ajax 请求,有时是由于在我开始得到 TokenMismatchException 的时间间隔内发送的请求数量。
我正在使用以下方式发送 csrf 令牌:
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
});
我的情况有什么解决方案?延长 csrf 令牌的生命周期?想法?
【问题讨论】:
-
你可能想看看类似的东西:github.com/GeneaLabs/laravel-caffeine
-
您是否 100% 确定
TokenMismatchException是由请求数引起的?你是怎么得出这样的结论的?我有TokenMismatchException,因为用户使用的是 IE。如果您有任何 IE 用户,也许值得调查。 robinz.in/csrf-token-session-error-with-laravel-on-ie-edge -
可以在VerifyCsrfToken中间件中排除路由。
-
不确定这 100% 但您可以在 ajaxSetup 中放置 cache: false, 以防止令牌被缓存。或者您可以将 _token 包含在数据中而不是标题中。
-
@AlexMansour 好的。那么这个问题是不是因为有并发请求时没有正确调用
$.ajaxSetup?这意味着您的数据正在通过,但 csrf 令牌没有,对吗?如果是这样,也许可以考虑 Can Celik 的建议:“......将 _token 包含到您的数据中而不是标题中。”