【Laravel】route関数を使用する場合のSSL化対策


SSL化する前の状態

bladeテンプレートのformのaction属性をroute関数で記載。
route関数についてはこちらの記事で説明しています。

<form method="post" action="{{ route('profile.create') }}">

上記の記述だと、URLがhttp://・・・になってしまいます。
SSL化されていませんので遷移先の画面では遷移先では下記画面が表示されます。

ちなみに、「このまま送信」ボタンをクリックするとエラーになります。
エラーの原因は、action属性で指定したroute先にリダイレクトされているため(GETリクエストのため)です。

(formのaction属性にパスを直で指定した場合は、URLはhttps://・・・でした。なのでroute関数を使用しない場合は、今回のSSL化対策はしなくても大丈夫だと思います。)

SSL化対策

App/Providers/AppServiceProvider.phpに以下を追記する必要があります。

App/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Routing\UrlGenerator;


class AppServiceProvider extends ServiceProvider
    public function boot(UrlGenerator $url)
    {
        $url->forceScheme('https');
    }
}

追記した後に、再度URLを確認するとhttps://・・・になっていました。

おわりに

今回、route関数を使用した時のSSL化対策を記載しました。似たような関数でurl関数がありますが、こちらもSSL化対策が必要だそうです。対策する場合は、下記記事が参考になると思います。
Laravelで作ったサービスをSSL化した時にやったことと参考記事一覧

参考

LaravelのSSL化対策