laravelというかherokuのhttps化が原因です
前回jetstreamを入れましたが、この機能モリモリの認証パッケージにはプロフィール写真を変える機能があります。
宣伝:良かったら使って下さい。
で、https化をcloudflareで実現した訳ですが、新しいプロフィール写真をアップロードすると404が返ってくる。
一時上手く動いていた気がしますが、先ほど触ったら404、ググっても外人さんも困っております。
ただその外人さんの意見の中で404ステータスを返す部分をコメントアウトしちゃえ!という物がありました。
ローカル環境では問題なく動いてますし、何ならherokuの独自ドメインの場合でもちゃんと動きます。
cloudflareを通してhttps化した時だけ上手く動かないのです。
やりましょう。
やり方は至ってシンプル。
コメントアウトすればいいだけです。
ただ、そのファイルがベンダーファイルなのでオーバーライドして書く必要があります。
laravelのベンダーファイルのオーバーライドの仕方は、ググったらすぐ出て来ました。
“psr-4”: {
“App\\”: “app/”,
“Database\\Factories\\”: “database/factories/”,
“Database\\Seeders\\”: “database/seeders/”
},
“exclude-from-classmap”: [
“vendor\\livewire\\livewire\\src\\Controllers\\FilePreviewHandler.php”, →変更点:1
“vendor\\livewire\\livewire\\src\\Controllers\\FileUploadHandler.php” →変更点:2
],
“files”:[
“app\\override\\livewire\\livewire\\src\\Controllers\\FilePreviewHandler.php”, →変更点:1
“app\\override\\livewire\\livewire\\src\\Controllers\\FileUploadHandler.php” →変更点:2
]
},
やり方はappフォルダの中にオーバーライド用のフォルダを作ってそのパッケージごとコピーして対象のファイルを上の様に書いてあげます。
パッケージごとコピーするのでそこまで必要があるのか不明ですが、ファイル単位でも出来ないかやってみます。
こんなんで404が消えるのか不安でしたが、無事オーバーライドされていました。
ちなみに変更した点は本当に些細な部分で下記の通りです。
{
public function getMiddleware()
{
return [[
‘middleware’ => FileUploadConfiguration::middleware(),
‘options’ => [],
]];
}
public function handle()
{
//abort_unless(request()->hasValidSignature(), 401); →ここをコメントアウトしただけ
$disk = FileUploadConfiguration::disk();
$filePaths = $this->validateAndStore(request(‘files’), $disk);
return [‘paths’ => $filePaths];
}
Stack Overflowなどを見るとnginxの設定で消せるのかもしれないです。
今回は緊急措置という感じです。
やってみたら気持ちモッサリしたので、他の方法があれば知りたいです。
コメント