2010-02-18 97 views
3

我有一個網站使用www.example.com作爲標準頁面,secure.example.com使用HTTPS。 我想在用戶登錄時設置一個cookie,該網站在HTTP & HTTPS版本的網站上都是有效的。Google Chrome Cookies - HTTP&HTTPS

我這樣做是通過將路徑設置爲「/」和域設置爲「.example.com」。這在Firefox和Internet Explorer工作正常,但在Chrome瀏覽器中的cookie只工作在那裏它被設置站點(http://www.example.comhttps://secure.example.com

這是一個錯誤的版本,還是我做錯了什麼?如果這是一個錯誤,是否有解決方法?

該cookie由PHP在標題中設置。

setcookie("login",base64_encode($email."::".md5($password)),2840184012,"/",".example.com"); 

回答

4

您無法同時爲HTTP和HTTPS同時設置Cookie。您需要設置兩個單獨的cookie,一個用於HTTP,另一個用於HTTPS:

setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com"); 
setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com", true); 

此,如果你在https://secure.example.com設置的Cookie,你只能通過HTTPS設置安全cookie不只是工作。

呵呵,順便說一句:做不是將認證信息存儲在一個cookie中!改爲使用一次有效的身份驗證令牌。

+0

按照您的建議嘗試過,但這仍然無法在Chrome中使用。我在設置cookie後立即使用header(「Location:http://www.example.com」),如果這有所作爲? – Tim 2010-02-18 15:54:47

+1

@Tim:你正在通過HTTPS設置這些cookie? – Gumbo 2010-02-18 16:02:27

+0

是的,我在HTTPS上測試過。該Cookie可在除Chrome之外的所有瀏覽器中的HTTP和HTTPS網站上運行,並且只能在HTTPS網站上運行。 – Tim 2010-02-18 16:10:25