Cookie无法在MAC -Safari& IOS Mobile- Safari

时间:2017-04-07 16:04:51

标签: c# cookies safari

我正在创建一个模型,序列化&分配到cookie并将其传递给下一页。 我可以在除

之外的所有浏览器的下一页中获取cookie值
  • MAC -Yoshemite - Safari
  • 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"]))
    });
    

3 个答案:

答案 0 :(得分:0)

第一:您正在覆盖cookie - 不会使用此代码使其失效。 响应对象发送一次 - 使用" new"曲奇饼。 如果cookie存在 - 只需更改其值和/或内容。 我会在AppSettings上检查你的假设[" cookiesecond"]

也试试这个:

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

可能是浏览器上限不匹配......

答案 1 :(得分: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=/;");
            }

答案 2 :(得分:0)

默认情况下,iOS Safari浏览器不允许使用Cookie。我们必须从iOS safari浏览器启用cookie设置,

解决方案: - - 我们已经实现了本地存储(java脚本概念)来克服iOS safari浏览器中的cookie问题。