Laravel 5 はデフォルトで CSRF フィルターをすべての非 get リクエストに適用しているようです。これはフォームの POST では問題ありませんが、POST や DELETE などを行う API では問題になる可能性があります。
簡単な質問:
CSRF 保護なしで POST ルートを設定するにはどうすればよいですか?
に移動してapp/Http/Middleware/VerifyCsrfToken.php
、 $except 配列に (csrf トークンを無効にする) ルートを入力します。
例えば:
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'/register'
];
}
問題への私のハック:
CSRF は、グローバルに登録された「ミドルウェア」になりましたApp\Http\Kernel.php
。削除すると、デフォルトで CSRF 保護なしになります (Laravel4 の動作)。
ルートで有効にするには:
app/Providers/RouteServiceProvider.php で短縮キーを作成します。
protected $middleware = [
// ....
'csrf' => 'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken',
];
任意のルートで有効にできるようになりました:
$router->post('url', ['middleware' => 'csrf', function() {
...
}]);
IMOの最もエレガントなソリューションではありません...
これを聞いてください。30 分前に、私はこの同じ問題に直面していました。これで解決しました。これを試してみてください。
アプリに移動 -> HTTP -> カーネル
カーネルファイルを開きます。
そこにあなたが見ることができます: \App\Http\Middleware\VerifyCsrfToken::class,
// を使用してこの特定のコードを無効にするだけです
それだ!これはうまくいきます!
API呼び出しからミドルウェアを削除できるように(必要に応じて..)