やりたい事
やりたいSNSのようなものを開発しております。
laravelのapi.phpで設定したルーティングにMiddlewareでwebを指定したい。
起きたこと、試したこと
api.phpで、以下のようなものを記述いたしました。
php
1Route::post('hogehoge/insert', 'HogehogeController@insert')->middleware('web');
この結果がこちらです。
error
1CSRF token mismatch.
CSRFトークンがミスマッチしているとのことです。
おかしい、CSRFトークンはきちんと設定されているはずなのです。
ヘッダーにはちゃんと
X-XSRF-TOKENの項目があります。
不思議なのが、
apiファイルではなくwebファイルに記述した時はこのエラーが起きないということです。
php
1Route::post('hogehoge/insert', 'hogehogeController@insert');
このように殆ど同じ内容のものを用意しました。
vue-router,vue,axiosの環境でやっているのですが、
axiosのurlも
js
1axios.post('/api/concept/insert', { 2 3}).then(function(response) { 4 alert(response.data) 5}.bind(this)).catch(function(error) { 6 console.log(error); 7 alert('項目に問題があるか、プログラムに異常があるようです。') 8}.bind(this));
から、
js
1axios.post('/concept/insert', { 2 3}).then(function(response) { 4 alert(response.data) 5}.bind(this)).catch(function(error) { 6 console.log(error); 7 alert('項目に問題があるか、プログラムに異常があるようです。') 8}.bind(this));
にしました。
この場合だと先程のようなエラーは起きません。
web.phpでのルーティングと、api.phpでMiddlewareにwebを指定した場合でのルーティングでは何が違うのでしょうか。
その他の実験
api.phpでのMiddleware指定をwebではなくapiにするとエラーは出ませんが、代わりにログインした状態でもAuth::check()の結果がfalseになります。やろうとしている処理にログインしているかどうかが必要なので、これはきちんと動作してもらう必要があります。
環境
laravel 7
vue 2.6.11
vuex
vue-router

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。