2017-04-07 80 views
4

我正在創建一個模型,序列化爲&,並將其分配到cookie中並傳遞給下一頁。 我能夠得到所有瀏覽器下頁cookie值除Cookie無法在MAC -Safari和IOS Mobile中工作 - Safari

  • MAC -Yoshemite - 野生動物園
  • IOS - IPHONE 6 Mobile- Safari瀏覽器

    我是否需要更新下面的代碼,在Safari上工作。

    string CookieName= "dsResponse"; 
    string json = new JavaScriptSerializer().Serialize(model);  
    
    if (HttpContext.Current.Request.Cookies[CookieName] != null) 
    { 
        HttpContext.Current.Response.Cookies[CookieName].Expires = DateTime.Now.AddDays(-1); 
    } 
    HttpContext.Current.Response.SetCookie(new HttpCookie(CookieName) 
    { 
        Value = json, 
        HttpOnly = false, 
        Expires = DateTime.Now.AddSeconds(Convert.ToInt32(ConfigurationManager.AppSettings["cookiesecond"])) 
    }); 
    
+0

您試圖保存在cookie中的字符串有多長? Cookie的空間有限,無法保存數據。 –

+0

但在其他瀏覽器中工作的東西 – Shailesh

+1

Cookie的大小有多大? Safari特別要求使用苗條cookie - 每個域名4093B是一個限制;請參閱http://stackoverflow.com/questions/640938/what-is-the-maximum-size-of-a-web-browsers-cookies-key –

回答

0

1:要覆蓋的cookie - 不使用此編碼,有效期它。 響應對象會發送一次 - 包含您的「新」cookie。 如果cookie存在 - 只需更改其值和/或內容。 我會檢查你的假設上的AppSettings [「cookiesecond」]

也試試這個:

If Request.ServerVariables("http_user_agent").IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) <> -1 Then 
    Me.Page.ClientTarget = "uplevel" 

這可能是瀏覽器帽不匹配......

0

有一些逗號涌來JSON數據及其在破壞數據時的破壞。

var cookieValue = (json).Replace(";", "").Replace(",", "***"); 
if (HttpContext.Current.Request.Browser.Type.ToLower().Contains("safari")) 
      { 
       HttpContext.Current.Response.AddHeader("Set-Cookie", sessionName + "=" + cookieValue + "; path=/;"); 
      } 
0

默認情況下,cookie不允許用於iOS Safari瀏覽器。我們必須啓用來自iOS Safari瀏覽器的Cookie設置,

解決方案: - - 我們實現了本地存儲(java腳本概念),以克服iOS Safari瀏覽器中的Cookie問題。

相關問題