2016-08-10 34 views
0

LaravelとAngularを混在させるアプリケーションでは、Angularサービスからルートを呼び出すときにこの永続的なCSRF token mismatchエラーが発生しています。Laravel/AngularアプリケーションのCSRFトークンの不一致

ROUTES

Route::group(['middleware' => ['web'] ], function() { 

    // non-auth routes (e.g. signup, login) ... 

    Route::group(['middleware' => 'auth'], function() { 

     Route::get('w/{ignore?}', function() { return view('writer.index');}) 
     ->where('ignore', '.*'); 

     Route::match(['get', 'post'], 'doc/open', '[email protected]'); 
    }); 
}); 

writer.indexビューはトークンエラー(ユーザが認証されています)せずに罰金を示しています。それは設定していますどのようにこれは、多かれ少なかれです。

VIEWを含む:角度から

<meta name="csrf-token" content="{{ csrf_token() }}" /> 

<script> 
$(function(){ 
    $.ajaxPrefilter(function(options, originalOptions, xhr) { 
     var token = $('meta[name="csrf-token"]').attr('content'); 
     if (token) { 
      return xhr.setRequestHeader('X-CSRF-TOKEN', token); 
     } 
    }); 
}); 
</script> 

を、サービスがtoken mismatch error返し$http.postdoc/open経路への要求を生成しています。

私はヘッダーを確認しました。$http.postは実際にX-XSRF-TOKENの値を送信しました。ただし、このヘッダー値は、CookieのXSRF-TOKENの値と一致しません。それが不一致なら、それはなぜ起こっていますか?

+0

Laravelから受信したx-xsrfが既に送信されているため、角度を設定する必要はありません。https://laravel.com/docs/5.2/routing#csrf-x-xsrf-token – naneri

+0

@naneriありがとうございます。しかし、私はそれを削除する場合、私はまだエラーが発生します。 – greener

+0

AJAX通話中に角ツールで角を送信してもdevツールでチェックできますか?どのバージョンのAngularを使用していますか? – naneri

答えて

0

laravel 5.3では、これはPassportパッケージで単純化されています。 Angularリソースリクエストで同じ問題が発生しました。私は今laravelが自動的にWebミドルウェアグループ内で行われたすべての要求のためのX-CRSF-TOKENが含まれます作曲経由でパスポートをインストールし、

app\Http\Kernel.php 

protected $middlewareGroups = [ 
    'web' => [ 
     \stix\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \stix\Http\Middleware\VerifyCsrfToken::class, 
     \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class, 
    ], 

に次の行を追加して、それを修正しました。お役に立てれば。

関連する問題