我有一個網站,其中有一個公共和私人區域。私人區域 應通過HTTPS提供。我想將一次重定向到一個明確的HTTPS網址,然後使用相對URL來確保所有鏈接都是安全的。當用戶註銷時,我將顯式鏈接到絕對不安全的HTTP URL。Codeigniter重定向不保留HTTPS在相對重定向
我的登錄表單通過常規HTTP顯示爲不安全的網站。我的登錄表單發佈到https://www.mysite.com/login/validate
,使用安全連接加載。
我的日誌顯示Apache正在通過HTTPS加載URL,codeigniter正在正確地進行驗證。
在我的控制器功能結束後,我使用CodeIgniter的URL助手的redirect
方法將其重定向到/myaccount
,並使用相對URL。
redirect('/myaccount');
這會導致codeigniter重定向到非HTTPS URL。
我的配置BASE_URL非HTTPS:
$config['base_url'] = "http://www.mysite.com"
這是因爲網站的某些部分是安全的,而有些則沒有。
有沒有辦法告訴CodeIgniter在做相對重定向時保留HTTPS?爲什麼假設我想要轉到非HTTPS站點(如果當前控制器是通過HTTPS加載的並且我正在執行相對重定向)?
我希望的行爲是,如果我正在做相對重定向,它應該保留當前請求加載的協議。相反,它切換到配置base_url定義的內容,即使是相對重定向。
我真的很喜歡這個答案。我遇到了同樣的問題,並且我正在對某些幫助器(如helper和form helper中的form_open)進行擴展以正確檢測http和https,但我認爲這樣可以處理所有內容,而無需擴展多個幫助器。不知道爲什麼這樣的東西沒有內置到框架中,考慮了使用安全和非安全頁面的網站的流行程度。 – somomomo 2012-01-04 21:49:38
這工作得很好!我只想補充說,一旦創建了這個幫助器,你可以自動加載它在config/autoload.php文件中。 ''''autoload ['helper'] = array('url','html','https_helper');' – cfnerd 2015-06-24 14:47:38