2017-07-11 10 views
0

ロードバランサの背後にあるインスタンスのAWS Elastic Beanstalkでwebappを実行しています。 AWS DocumentationとしてロードバランサでHTTPSを終了します。 Apacheはこのディレクティブを経由してhttpsにすべての着信HTTP要求を書き換えるために設定されているCakePHP 3.4 DebugKitはAWSロードバランサの背後にあるTLS経由でリクエストしません

<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} </VirtualHost>

また、私は、HTTPSは、安全な接続にヘッダーX-転送さ-プロトなしに任意の接続をリダイレクトするためにCakePHPのセキュリティコンポーネントを使用しています。

これにもかかわらず、私のアプリは依然として安全ではないDebugKitアセットを要求しており、サーバーはクリアで応答しています。これは、セキュリティで保護されたコンテンツではないため、Internet ExplorerがDebugKitスクリプトを実行しない原因となっています。 IEで混合コンテンツ保護を無効にしましたが、DebugKitを実行できませんでした。

最終的には、クライアントサイドの回避策に頼るのではなく、すべてを安全に提供することをお勧めします。助言がありますか?私は何が欠けていますか?

+0

'https'であなたのサイトを呼び出すとき、' Configure :: read( 'App.fullBaseUrl') 'の値は何ですか? – ndm

+0

httpsではなくhttpが表示されています。ロードバランサがその背後にあるインスタンスに明確に伝達しているからです。他のすべてのアセットはhttps経由で返送されますが、DebugKitでは返されません – Calteran

+0

他のアセットはおそらく相対パスを使用して配信されます(デバッグキットは絶対URLを使用してiframe経由で埋め込まれます)。 PHPがHTTPS状態を知らない場合、 'App.fullBaseUrl'設定値を' https'を使用するようにハードコーディングしてみてください。それであなたは私が推測できることはあまりありません。 [**あなたの 'config/bootstrap.php'ファイル**](https://github.com/cakephp/app/blob/3.4.2/config/bootstrap.php#L132-L149)を確認してください。 – ndm

答えて

0

私はthis questionで答えを見つけました。基本的には、cake/bootstrap.phpを編集してX-Forwarded-Protoを探すか、.extensionsを使って手動でHTTPSサーバのvarを設定することができます。

関連する問題