2016-12-19 20 views
1

は、私はすでにいくつかのtopicsAngular2とLaravel CSRF保護

を読んでいると私が遭遇した問題は、コードのこの部分では嘘である私は、AJAXリクエストを送信するコアエンジンとしてAngular2を使用してい

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

LaravelのAPIに、私は、ブレードのテンプレートを使用していない - ちょうど.html filesを、私はそうhtmlファイルから

をPHP関数csrf_token()を呼び出すことはできません、私は私の を拡張することにより、一時的な解決策を追加しました

public function handle($request, Closure $next) 
{ 
    if (! $request->is('api/*')) 
    { 
     return parent::handle($request, $next); 
    } 

    return $next($request); 
} 

ファイルしかし、それは回避する最良の方法ではないようで、この問題を解決するために、他の解決策はありますか?/var/www/pandacrm/app/Http/Middleware/VerifyCsrfToken.php

+0

CSRFミドルウェアを無効にする(推奨しない)か、CSRFミドルウェアに有効なトークンを提供することができます。何らかのクロスサイトリクエスト偽造防止を行わずにajaxリクエストを作成することは、非常に危険なことです。 – Joe

答えて

2

metaタグをHTMLファイルのJavaScriptを使用して作成できます。

トークンを取得するためにLaravelルートにAjaxリクエストを送信します。これを行うにはどのように

。 (Controllerアクションでcsrf-tokenを返す)そして、あなたのhtmlファイルにそのトークンを持つmetaタグを作ります。

これを行う前に、その特定のルートでcsrf保護を無効にする必要があります。 laravel5にはhere、5.3にはhereを実行する方法があります。

他のajaxリクエストに使用できるcsrfというメタタグがあります。