2009/05/18

http 與 https 間的 session

由於在加密傳輸的 https:// 網頁中,引入未加密傳輸的 http:// 網頁內容,會出現「安全性資訊」警告。因此在 https:// 網站裡,最好不要引入 http:// 的內容,以免造成使用者不便。

但在目前這個充斥著各種 API 與 Widget 的網路環境中,難免會遇到要在 https:// 網頁中引入 http:// 的狀況。在這種情境下,最好的方式是只在有需要加密傳輸的頁面使用 https://,一般較不重要的頁面仍然使用 http://,降低使用者不便。

而在此種狀況下,最大的問題出在 session 是否能在 https:// 與 http:// 間相互傳遞。因為使用者不會希望在 http:// 登入之後,頁面切換到 https:// 又要再登入一次。幸好,如果是同一台網站伺服器,只要是相同的域名,http:// 與 https:// 互相轉換時會共用相同的 session。

測試方式

比方說 http://abc.com/ 與 https://abc.com/ 是在同一台網站伺服器,其下有個 sid.php 的內容如下:

session_start();
echo session_id();

當瀏覽器開啟 http://abc.com/sid.php,會顯示此次連線時的 session id 值。此時不要關閉瀏覽器,直接將網址改成 https://abc.com/sid.php,如果畫面上出現的 session id 與之前的一樣,就表示 session 是一樣的;反之,便表示 session 沒有連貫。

沒有留言:

張貼留言