2009-08-06 37 views
4

一些背景:如果在IE7中有兩個同名Cookie,該怎麼辦?

CakePHP除了PHPSESSID之外還寫了自己的會話ID cookie。這用於驗證請求。然後SWFupload會發送一個文件,然後該令牌進行身份驗證,並被選爲新用戶代理 - 因此在cakephp中,您必須禁用「檢查用戶代理」安全功能。

在許多瀏覽器上,這就夠了。 IE7版本和SWF版本似乎沒有這個bug的相關性。在我們的例子中,IE7存儲/發送同一個cookie的兩個版本。所以第一個問題是爲什麼?怎麼樣?

進一步解釋:

因爲這些重複的Cookie被存放在開頭和結尾的頭部字符串,PHP /蛋糕接收一端,如果它是一個重複數據刪除,因此「選擇」一,手動餅乾我設置併發送swfobject是另一個cookie。我可以想到一些竅門來解決這個問題 - 但是我真的很想知道這種情況怎麼會出現在第一位。

CakePHP似乎也不會在註銷和登錄時生成唯一的CakeSession標識符,這可能是原因,解決方案可能是強制在任何地方都使用PHPSESSID,或者可能只是爲了確保swfupload發送正確的SESSID ...

編輯之一: CakePHP執行發送的cookie標頭是:

Set-Cookie: CAKEPHP=gqlpa88blmhmdsmv9e99ga16b3; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/ 
Set-Cookie: CAKEPHP=deleted; expires=Wed, 06-Aug-2008 13:21:01 GMT; path=/ 
Set-Cookie: CAKEPHP=ob5695trnspprlohiunrpqgkm0; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/ 

任何想法表示歡迎!

回答

7

了兩個cookie可以有相同的名字,如果他們爲不同的域或路徑設置。例如,如果您在「www.example.com」和「example.com」上設置了一個cookie「ID」,那麼對於「www.example.com」的每個請求都會發送兩個ID cookie。或「anything.www.example.com」。

爲了防止出現這種情況,請確保您始終如一地爲同一個域設置Cookie,並且如果您碰巧有多個域名被別名到同一服務器(例如www.example.com和example.com)重定向到另一個。

同樣,不要使用不同的路徑值設置同名cookie。

4

據我所知,如果你設置了一個已經存在的cookie,它只是覆蓋舊cookie的值和過期日期......這是每個域。意味着你可以在/和/下有兩個相同名字的cookie,而且它們不會互相覆蓋。

其網站中的Cookie名稱是唯一的。至少在標準中。不知道IE7是否跟隨這一個。

或者不是你問的是什麼?

問候

相關問題