【问题标题】:CSRF Token mismatch on Ajax Form on change submission更改提交时 Ajax 表单上的 CSRF 令牌不匹配
【发布时间】: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 包含到您的数据中而不是标题中。”

标签: php jquery ajax laravel


【解决方案1】:

如果调用没有处理任何敏感信息,则将路由放入 VerifyCsrfToken 类的 except 数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2016-12-08
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2015-10-21
    相关资源
    最近更新 更多