簡體   English   中英

Cookie在某些Android瀏覽器上不會更新

[英]Cookies don't update on some android browsers

我開發了一個兩步驗證登錄,該登錄使用cookie來檢查設備是否已通過驗證:此cookie包含唯一的ID和隨機密碼,該密碼在每次設備訪問時都會更改。 要進行更新,我使用以下php代碼

setcookie('nameofthecookie', '', time()-600,"/");
setcookie('nameofthecookie', $newcookiecontent, time()+2629743,"/");

它在大多數瀏覽器上都可以完美運行,但在某些android瀏覽器上卻不行:事實上,使用它們,cookie不會更新。

我嘗試做的是:

  1. 僅使用創建Cookie

    setcookie('cookie的名稱',$ newcookiecontent,time()+ 2629743,“ /”);

    並且有效 ;

  2. 僅使用刪除Cookie

    setcookie('cookie的名稱','',time()-600,“ /”);

    它起作用

有人可以建議我解決方案嗎?

您的代碼將導致以下標頭發送到客戶端:

Set-Cookie nameofthecookie=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/ 
           nameofthecookie=somevalue; expires=Sat, 24-May-2014 22:11:13 GMT; Max-Age=2629743; path=/

基於RFC的HTTP Cookies (第9頁),如果路徑相同,則未定義瀏覽器將選擇哪個cookie:

如果多個Cookie滿足上述條件,則按以下順序排序
Cookie標頭,以便那些具有更具體Path屬性的標頭
先於那些不太具體的。 關於其他的訂購
屬性(例如,域)未指定。

因此,也許Android瀏覽器選擇具有emtpy值的cookie,而您的桌面瀏覽器選擇了后者。 Netscape Cookies規范指出:

具有相同路徑和名稱的實例將相互覆蓋,以最新實例為准。 路徑相同但名稱不同的實例將添加其他映射。

實際上,您無需在設置新值之前將Cookie重置為空白值。 只需刪除代碼的第一行即可。

有關使用PHP管理cookie的更多信息,請參見本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM