【问题标题】:Laravel5 regenerates CSRF Token across AJAX requests. Can't AJAXLaravel5 跨 AJAX 请求重新生成 CSRF Token。不能 AJAX
【发布时间】:2015-06-20 15:52:56
【问题描述】:

我正在开发一个使用 Laravel5 构建的 API 和一个使用 Angular JS 的 客户端。两者完全分离和独立。

为了将 AJAX 插入 API,我的 客户端 成功请求在给定端点 (/token) 使用 Laravel 的 csrf_token() 生成的令牌,然后将其存储在其 $rootScope 中稍后在每个 POSTPUT 请求中用作 _token 字段。

但是在发送 AJAX PUTPOST 请求时,我收到 TokenMismatchException 错误。

我正在打印输出中匹配的令牌,并且在每次 AJAX 请求时它都不同,但通过浏览器加载 /token(常规 HTTP 请求)每次都输出相同的令牌。

有什么想法吗?

我不知道这是设计使然,我的应用程序逻辑有缺陷,还是有其他问题。

【问题讨论】:

    标签: ajax angularjs session laravel csrf


    【解决方案1】:

    您需要将令牌添加到您的标头并将其包含在您的 ajax 调用中。使用

    <meta name="csrf-token" content="{{ csrf_token() }}" />
    
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    

    在文档中

    http://laravel.com/docs/5.0/routing#csrf-protection

    【讨论】:

    • headerspost 方法都应该起作用,但它们都不起作用。我都试过了。令牌正在传递给 API,只是不匹配。
    猜你喜欢
    • 2018-07-29
    • 2015-03-17
    • 2013-08-24
    • 2015-10-13
    • 2015-08-28
    • 2021-03-20
    • 1970-01-01
    • 2015-10-06
    • 2013-03-06
    相关资源
    最近更新 更多