2015-04-14 89 views
1

我正在使用Angular JS开发使用Laravel5和客户端构建的API。两者完全分离和独立。Laravel5通过AJAX请求重新生成CSRF令牌。 Can not AJAX

要AJAX API时,我客户成功使用生成的令牌请求Laravel的csrf_token()在一个给定的端点(/token),然后将其存储在其$rootScope稍后用作每一个_tokenPOSTPUT请求。

但发送AJAX PUTPOST请求时,我得到一个TokenMismatchException错误抛出。

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

任何想法发生了什么?

我不知道这是否是由设计,我的应用程序逻辑有缺陷,或者有其他的失败。

回答

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

+0

两个**头部**和** **后的方法应该工作,没有人做。我已经尝试过他们两个。令牌正在传递给API,它只是不匹配。 –