2016-04-25 82 views
1

可能是一個類似的問題,但到目前爲止,我找不到任何答案我的問題。檢查是否可以在重定向之前建立安全連接

情況:用戶在我的網站http://www.example.com。我正要將他重定向到我的另一個站點:https://secure.example.org

在重定向發生之前,我想檢查客戶端是否確實能夠成功建立安全連接。 (服務器端在重定向期間,或者在重定向之前可能有AJAX請求或任何服務於此目的的請求)。

這樣做是否可能?它將如何完成?如何做到這一點的任何偏好?

回答

1

如果瀏覽器無法安全地連接到https://secure.example.org它不會。

您可以隨時發出AJAX請求,但成功或失敗並不能說明真正請求的成功。 (因爲它是跨域的,你將不得不添加CORS頭文件)。

當前的配置是由設計不安全:因爲你的第一個頁面使用HTTP,攻擊者可以通過任何他想要更換你的鏈接到你的安全頁面。

如果您將https添加到您的第一頁,那麼您無事可做,瀏覽器將爲您執行所有安全檢查。

你也應該看看HSTS,以提高安全性。

要重定向到https,如果可能的話,在http網頁的開頭,包含一個帶有https網址的javascript文件,其中包含https網站的重定向:只有當用戶支持https時,纔會重定向用戶。 (你也可以使用HSTS與方法太)

+0

謝謝你的想法,但這不是我的問題的關注。我的問題是關於檢查瀏覽器是否可以建立安全連接。我遇到了早期瀏覽器版本的問題,因爲某些原因無法建立https連接,我希望能夠設置一個「後備」這樣說。如果沒有建立安全連接,我不想向用戶顯示瀏覽器生成的錯誤消息,而是將它們重定向到另一個頁面。目前沒有發送機密數據(實際上根本沒有用戶特定的數據)。 – koljanep

+1

@koljanep我已經添加了解釋如何儘可能重定向到https。你需要更多的細節嗎? – Tom

0

嘗試是這樣的:

if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){ 
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

頭( 'HTTP/1.1 301永久移動'); header('Location:'。$ redirect);

}

+0

謝謝,但這不是我的問題的答案。 – koljanep

+0

好吧,我會嘗試其他選項 –

相關問題