2016-03-30 15 views
7

私はlaravel 5.2で作成されたアプリケーションを持っています。 HTTP上で正常に動作していました。CloudFlareの背後にあるLaravelのHTTPからHTTPSへの移動

I代わりlaravelドキュメントhere、自動的に要求プロトコルを検出し、それに応じてURLを生成asset方法によれば

<link rel="stylesheet" type="text/css" href="{{ asset('/css/bootstrap.min.css') }}"> 

等に対する1年代を使用する完全なURLを生成するasset関数を用います。

アプリケーションがHTTPSで実行されていない secure_assetをHTTPS URLに使用できますが、HTTPとlocalhostでの実行が停止します。

私はそこに私が欠けている何かがあるとそれだけでPS laravel

を使用してHTTPからHTTPSへの移行にはそれほど難しいことではないことを知って - CloudflareHTTPS要求にサービスを提供するために使用されています。依存性注入を介して電流のHTTPリクエストのインスタンスを取得するための要求 へのアクセス

答えて

6

これまでの回答はすべて正しいものの、私の問題は解決しませんでした。

主な問題は、CloudFlare

背後に自分のアプリケーションであったLaravelも要求が原因のCloudFlareにHTTPSであるHTTPまますなわち$_SERVER['REQUEST_SCHEME'] HTTPヘッダーをチェックするなど、安全なまたは安全でない要求を検出します。

CloudFlareは要求を検出するためにチェックする必要があり、同じすなわち$_SERVER['HTTP_X_FORWARDED_PROTO']に異なるヘッダーは私が正常に変更を加えずにHTTPSのURLを生成するために管理this記事に続き、これにいくつかの変更を行う

安全なかではありません設定します以前のアプリケーションコードに変換します。

+0

mod_cloudflareを有効にすると、コードを書かなくても問題を解決できたと思います。 – brazorf

+0

それはクラウドフレアのためにそれを解決しましたが、このソリューションはすべてのタイプのロードバランサにとって普遍的です – Cybersupernova

+0

申し訳ありませんが、タイトルはクラウドフレアに重点を置いていると思いました。 – brazorf

1

、あなたは、コントローラのコンストラクタまたはメソッド https://laravel.com/docs/5.2/requests#request-information

の代わりに、手動でできたのconfigsを通してそれを設定するにIlluminate\Http\Requestクラスを、ヒントを入力する必要があります

+1

私はそれを行うこともできますし、 '$ _SERVER ['REQUEST_SCHEME']'を使って要求が安全かどうかを検出することもできますが、資産機能が正しいURLを生成するのに役立つ方法はわかりません – Cybersupernova

1

laravel sourceによれば、http/httpsを使用するよう明示的にヒントしていない場合、アセットはリクエスト情報に基づいてプロトコルを生成します。だから、あなたはここで何も変更すべきではありません。セキュアな接続でリクエストを開始すると、httpsに切り替わります。

+1

私が知っている限り、私は明示的に変更していませんが、私はそれを確認できるところから教えてください。 – Cybersupernova

関連する問題