HerokuにLaravelをデプロイした際、そのままではroute()、asset()等のヘルパーで出力されるスキームがhttp
になります。
これはアクセスする際にHeroku側のロードバランサによってフォワードされ、リクエストのスキームが消えてしまうことが原因です。
対応策
Laravel 5.5ではTrustProxiesというミドルウェアが追加されています。
通常、$proxies
にロードバランサのIPアドレスを追加することでLaravelにリクエスト元のスキームを正しく伝えることができます。
しかしHeroku上のロードバランサはIPアドレスがアクセスのたびに変わるため、指定するべきIPアドレスを特定することができません。
この場合は以下のようにワイルドカードを設定することができます。
app/Http/Middleware/TrustProxies.php
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies = '**';