私のアプリはフロントエンドでReact、バックエンドでLaravel 5.4を使用しています。私はfetch()
を使ってバックエンドからデータを要求しています。問題は、ページが読み込まれたときに2つのセッションが作成されることです。 TokenMismatchException
は、POST
要求が行われたときにCSRFミドルウェアによってスローされます。これは、送信されるトークンが、作成された最初のセッションに一致しますが、2番目のセッションと照合するためです。LaravelへのフェッチAPIによって新しいセッションが作成される
a:3:{s:6:"_token";s:40:"7obvOzPaqqJDtVdij8RaqrvmTFLjKA2qnvYMxry6";s:9:"_previous";a:1:{s:3:"url";s:24:"http://localhost/page";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
a:3:{s:6:"_token";s:40:"5Aiws9Qy72YzlkfWX81zkhzrSeiMDYjFWiLeDAwN";s:9:"_previous";a:1:{s:3:"url";s:41:"http://localhost/api/page";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
要求:
私はapp.blade.php
<meta name="_token" content="{{ csrf_token() }}">
にトークンを設定し、フェッチ設定ここで
fetchConfig = {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
},
credentials: 'same-origin'
}}
にトークンをつかんだが復号化されたセッションですURL:http://localhost/page
APIのURL:http://localhost/api/page
私が反応アプリはその初期GET
要求を行うときに作成されてから新しいセッションを防ぐことができますどのように?
どのセッションドライバーを使用していますか? –
私は 'file'セッションドライバを使用しています。 – bill
JWT Auth(JSON Webトークン認証)トークンをLaravel APIに使用した場合。 APIは状態を維持できないためです。したがって、Csrfトークン検証が必要な場合は、それをメタタグまたはJWTペイロード内にプライベートクレームとして格納して実装する必要があります。 –