我正在创建一个模型,序列化&分配到cookie并将其传递给下一页。 我可以在除
之外的所有浏览器的下一页中获取cookie值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 :(得分: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问题。