Laravel 5.2和angularJS令牌不匹配

时间:2016-03-20 16:23:45

标签: angularjs laravel-5.2

我正在开发一个在一台服务器上使用静态文件而在另一台服务器上使用api的webapp。前端采用角度和后端使用laravel开发。

在首次加载期间CSRF-TOKEN抓取时,在角度run block内我有此代码

if(!$cookies.get('XSRF-TOKEN')){
    $http.get(API+'/csrf_token').success(function(d){
        $cookies.put('XSRF-TOKEN',d.XSRF_TOKEN);
        //$cookies.put('laravel-session',d.LARAVEL_ID);
        //$http.defaults.headers.common.X-CSRF-TOKEN = 'Basic YmVlcDpib29w';
        //$http.defaults.headers.post['X-CSRF-TOKEN']=$cookies.get('XSRF-TOKEN'); 
        $http.defaults.headers.post['X-CSRF-TOKEN']=d.XSRF_TOKEN; 
      });

我试图获得同样的另一种方式是使用this方式。

同时设置$httpProvider.defaults.withCredentials = true;以便将Cookie与请求一起发送。

路线/csrf_token设置为

Route::get("/csrf_token", function(){ //return \Response::json("asd",200)->withCookie(cookie("XSRF-TOKEN",csrf_token())); return csrf_token(); //\Crypt::encrypt(csrf_token()) });

所有ajax POST请求都会抛出TokenMismatchException in VerifyCsrfToken.php line 67:

接下来,我发送csrf_token参数作为_token附加了帖子参数,仍然是同样的问题。

尝试上述所有操作,从/csrf_token返回加密令牌,但仍然存在相同问题。

在api服务器中重复清除config:cache和composer dumpautoload的所有步骤,但仍然存在同样的问题。

审核了配置文件,一些值 -

'driver' => env('SESSION_DRIVER', 'file'),
'encrypt' => false,
 'files' => storage_path('framework/sessions'),
 'secure' => false,

(这些值似乎没问题) 接下来回顾了CORS配置的虚拟配置文件(内部目录标记)

   Header set Access-Control-Allow-Origin "www.mydomain.com" #real domain not posted  
    Header set Access-Control-Allow-Credentials 'true'
    Header always set Access-Control-Max-Age "2000"
    Header set Access-Control-Allow-Headers 'X-CSRF-TOKEN'
    Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
    Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require local

浪费时间谷歌搜索。(沮丧)。需要帮助。

注意:我无法在stackoverflow上找到类似于令牌不匹配问题的教程/答案,也没有找到我未尝试过的任何其他网站。感谢。

0 个答案:

没有答案