2011-04-09 39 views
1

以下.NET設置來設置餅乾在Firefox閱讀客戶方而不是IE或Safari

   HttpCookie c = new HttpCookie("tw"); 
       c.Expires = DateTime.Now.AddDays(100); 
       c.Path = "/"; 
       c.Secure = false; 
       c.HttpOnly = false; 

以下JavaScript讀取

function getCookie(c_name) 
    { 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) 
    { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if (x==c_name) 
     { 
     return unescape(y); 
     } 
     } 
} 

沒有多餘的頭被送來的餅乾餅乾在請求中。這適用於Firefox,但不適用於IE或Safari

+0

那麼IE或Safari會發生什麼?錯誤? – 2011-04-09 17:00:42

+0

我不認爲我曾經使用過JavaScript來獲得像你似乎想要的餅乾。也許你可能更容易使用AJAX從你的後端獲取cookies而不是? – peterthegreat 2011-04-09 17:01:17

+0

我在換回前試過。使用AJAXPro作爲包裝(筆記本電腦上只有可視化Web開發人員),生成的用於檢查Cookie的頁面的JavaScript類將會變得非常激烈,即當調用cookie檢查方法時,JavaScript對象有時會以未定義的方式返回。 – bizl 2011-04-09 17:05:44

回答

1

這裏發生的事情是,您不會爲您的cookie設置值。在IE中,無價值的cookie不包含'='。這意味着,在你的代碼中x是「」,y是「tw」。 然後,在if子句中,名稱比較總是失敗,因爲x是一個空字符串。結果,函數返回未定義。重寫你的邏輯,以處理在IE中無值的cookie中缺少'='的方式。

+0

這聽起來很合理。將測試和反饋。鉭 – bizl 2011-04-13 21:15:25

相關問題