C# Cookie在MAC-Safari&;IOS Mobile-Safari

C# Cookie在MAC-Safari&;IOS Mobile-Safari,c#,cookies,safari,C#,Cookies,Safari,我正在创建一个模型,序列化并分配到cookie中,然后将其传递到下一页。 我能够在所有浏览器的下一页中获取cookie值,除了 麦克-约塞米蒂-狩猎 IOS-IPHONE 6移动版-Safari 我是否需要更新以下代码才能在Safari中工作 string CookieName= "dsResponse"; string json = new JavaScriptSerializer().Serialize(model); if (HttpContext.Current.Reques

我正在创建一个模型,序列化并分配到cookie中,然后将其传递到下一页。 我能够在所有浏览器的下一页中获取cookie值,除了

  • 麦克-约塞米蒂-狩猎
  • IOS-IPHONE 6移动版-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"]))
    });
    

1st:您正在覆盖cookie,而不是使用此代码使其过期。 响应对象只发送一次-与“新”cookie一起发送。 如果cookie存在-只需更改其值和/或内容。 我会检查你对AppSettings[“CookiesSecond”]的假设

还可以尝试以下方法:

If Request.ServerVariables("http_user_agent").IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) <> -1 Then
    Me.Page.ClientTarget = "uplevel"
如果Request.ServerVariables(“http\u user\u agent”).IndexOf(“Safari”,StringComparison.CurrentCultureIgnoreCase)-1,则
Me.Page.ClientTarget=“uplevel”

可能是浏览器的大写字母不匹配…

JSON数据中出现了一些逗号,在反序列化数据时,逗号被打断

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

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

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

您试图保存在cookie中的字符串有多长?cookie保存数据的空间有限。但在其他浏览器中也可以使用同样的功能。cookie的大小有多大?Safari特别要求使用slim Cookie——每个域4093B是一个限制;看,这是第三方cookie吗?这些在Safari中默认被阻止