2017-07-11 21 views
0

我在負載平衡器後面的實例上的AWS Elastic Beanstalk上運行我的web應用程序。我根據AWS Documentation在負載均衡器處終止HTTPS。CakePHP 3.4 DebugKit不會通過AWS負載平衡器後面的TLS請求

的Apache設置通過這個指令重寫任何入站的HTTP請求到https:<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} </VirtualHost>

此外,我使用CakePHP的安全組件來重定向沒有X-轉發 - 協議HTTPS的任何連接頭到安全連接。

儘管如此,我的應用程序仍在請求不安全的DebugKit資產,並且服務器在明確響應。這導致Internet Explorer不運行DebugKit腳本,因爲它們不是安全的內容。我在IE中禁用了混合內容保護,但這並不允許DebugKit運行。

最終,我寧願安全地服務一切,而不是訴諸於客戶端解決方法。有什麼建議麼?我錯過了什麼?

+0

當你通過'https'調用你的網站時'Configure :: read('App.fullBaseUrl')'的價值是什麼? – ndm

+0

它顯示的是http,而不是https。我認爲這是因爲負載均衡器正在清晰地與其後面的實例進行通信。我的所有其他資產都通過https返回,但不包括DebugKit – Calteran

+0

其他資產可能使用相對路徑(調試工具包通過iframe使用絕對URL嵌入)?如果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。