2017-09-30 51 views
0

私はいくつかのものを行う外部サーバーにAJAX要求を送信してから、最初の呼び出しを行ったlaravelアプリケーションへのポストコールを行います。TokenMismatchException外部にlaravelアプリケーションへの投稿

私はlaravelアプリケーションへのPOST呼び出しをしようとしています。

X-CSRF-TOKEN: LO8Dg7j1jZssXXGSLIa8inBgh2Y1QSsp6Birc1Ui 
X-Requested-With: XMLHttpRequest 
Content-Type: application/x-www-form-urlencoded 

トークンAJAX要求を行ったユーザでログインに属している:今、私はここでcsrf_token()

を送信していますAJAX要求から、私は私のポストの要求に入れてきたヘッダがあります。今私が得ている問題は、私はTokenMismatchException 500エラーを取得します。

このエラーが発生しないように、外部の投稿でヘッダーを呼び出す必要がありますか?

私はCSRFトークンを持っているので、残りのクライアントを使ってこれらのヘッダーを使用してテスト投稿を送信しようとしていますが、同じエラーが表示されますか?

目的は、laravelアプリコントローラがトークンを使用できるようにするためです。$request->user();を使用してユーザーを取得できるようになります。

受信ルートには、webミドルウェアが添付されています。

答えて

1

他のサーバーから外部URLをリクエストしているので、他のアプリケーションから抜け出そうとすると、erorr.Csrfトークンが同じアプリケーションで動作します。 csrfトークンを無効にすることができます。

あなたはすべての要求のためのトークンを無効にしたいならば、CSRF保護からVerifyCsrfToken

にURIを除く
protected $except = [ 
      '/*', 
     ]; 

これを追加

時には、CSRF保護からのURIのセットを除外したいと思うかもしれません。たとえば、ストライプを使用して支払いを処理し、Webhookシステムを利用している場合、Stripeはルートに送信するCSRFトークンを認識しないため、CSRF保護からStripe webhookハンドラルートを除外する必要があります。

通常、これらの種類のルートは、RouteServiceProviderがroutes/web.phpファイル内のすべてのルートに適用されるWebミドルウェアグループ外に配置する必要があります。しかし、あなたはまた、VerifyCsrfTokenミドルウェアのプロパティを除き$へのURIを追加することによってルートを除外することがあります。

<?php 

namespace App\Http\Middleware; 

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; 

class VerifyCsrfToken extends BaseVerifier 
{ 
    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     'stripe/*', 
    ]; 
} 

参考: https://laravel.com/docs/5.5/csrf

+0

オーケー素晴らしいです!トークンを取得し、そのトークンを所有しているユーザーを取得して、そのトークンを認証するにはどうすればよいですか? – seb14717

+1

あなたが外来アプリケーションからlaravelにアクセスしている場合は、jwtトークンを使用するか、answer.laravelで述べたようにトークンを無効にする必要はありません。トークンではなくセッションに基づいて認証します。トークンベースの認証が必要な場合はjwt any他のオプションl – iCoders

+0

接続は特定のサーバーからのみ使用されるため、トークンを作成するときにユーザーにトークンをバインドするか、要求ヘッダーを通じてユーザーIDを送信できますか? – seb14717

関連する問題