Laravel5在AJAX请求中重新生成CSRF令牌。不能用AJAX

时间:2015-04-14 21:11:42

标签: ajax angularjs session laravel csrf

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

为了AJAX进入API,我的客户端成功请求在给定端点(csrf_token())使用Laravel的/token生成的令牌,然后将其存储在{ {1}}稍后将用作 POST PUT 请求中的 _token 字段。

但是,当发送AJAX PUT POST 请求时,我会抛出 TokenMismatchException 错误。

我在输出中打印匹配的令牌,在每次AJAX请求时打印不同的令牌,但是通过浏览器加载$rootScope(常规HTTP请求),每次输出相同的令牌。

这里有什么想法?

我不知道这是不是设计的,我的应用程序逻辑存在缺陷,或者还有其他问题失败。

1 个答案:

答案 0 :(得分:0)

您需要将标记添加到标题中并将其包含在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