hrendohHerokuにデプロイしたLaravelアプリのアセットのURLをhttpsにする手順HerokuではSSLの処理をロードバランサーで行っているので、Dyno上のLaravelアプリケーションはデフォルト設定ではhttpで動いていると判定されアセットのURLがhttpになってしまします。そのまま表示すると以下のようにブラウザの警告が出てしまいます。Routingで説明されています。Proxies」に記述されている通りApp\Http\Middlewar\TrustProxiesクラスのproxiesの値にロードバランサーのIPアドレスをセットします。DynoにはグローバルIPアドレスは割あたってない(はず)ので、すべてのプロキシからのリクエストを信頼する「*」をセットします。Request::HEADER_X_FORWARDED_ALL;}実装としてはこれだけなのですが、少し仕組みを解説してみます。ミドルウェアApp\Http\Middlewar\TrustProxiesは、Fideloper\Proxy\TrustProxiesを継承しています。$proxiesに「*」をセットした場合は、setTrustedProxyIpAddressesToTheCallingIpメソッドが呼ばれますが、このメソッドではリクエストのサーバー環境変数REMOTE_ADDRをそのまま信頼されるアドレスとして保存します。}続いてhttpsかどうかの判定ですが、LaravelのIlluminate\Http\Requestクラスのsecureメソッドに実装されています。secureメソッドは、親クラスのSymfony\Component\HttpFoundation\RequestクラスのisSecureメソッドを呼んでおり、まずisFromTrustedProxyメソッドで信頼済みのプロキシであることを確認しています。このとき、上記の通り「*」の場合はミドルウェアTrustProxiesでリクエストが来たアドレスを信頼済みプロキシとしてセットしているので必ずtrueが返ります。次にX-Forwarded-Protoヘッダーの値をチェックして、httpsぽい値がセットされていればtrueを返します。サーバーに渡しているためtrueと判定されます。確認したところ値は「https」でした。}あとは、Viewのヘルパー関数assetからIlluminate\Routing\UrlGeneratorのassetメソッドが呼ばれると’Symfony\Component\HttpFoundation\RequestクラスのgetSchemeメソッドが呼ばれ、その中で上記のisSecure`メソッドが呼び出されるという流れになります。