2017-04-07 20 views
4

私はモデルを作成しています。&をクッキーに割り当てて、次のページに渡しています。私はCookieがMACで動作していません - Safari&IOS Mobile Safari

  • MAC -Yoshemite以外のすべてのブラウザで、次のページでクッキーの値を取得することができています - サファリ
  • IOS - IPHONE 6 Mobile-サファリ

    私はに以下のコードを更新する必要がありますか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

他のブラウザでも同じことが働いています – Shailesh

+1

あなたのクッキーのサイズはどれくらいですか?特にSafariはスリムなクッキーを使用する必要があります。ドメインあたり4093Bが上限です。 http://stackoverflow.com/questions/640938/what-is-the-maximum-size-of-a-web-browsers-cookies-key –

答えて

0

:あなたはクッキーを上書きしている - このコードでそれを期限切れではありません。 レスポンスオブジェクトは、「新しい」クッキーで1回送信されます。 クッキーが存在する場合は、その値またはコンテンツのみを変更してください。 私は[「cookiesecond」]

をのAppSettingsにあなたの仮定をチェックすることも、この方法を試してください。

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

デフォルトでは、iOS SafariブラウザではCookieは許可されていません。私は、iOS SafariブラウザのCookie設定を有効にする必要があります。

解決策: - - iOS SafariブラウザのCookieの問題を解決するためにローカルストレージ(Javaスクリプトコンセプト)を実装しました。

関連する問題