【问题标题】:creating a cookie failing with safari, chrome, ie but working with FF使用 safari、chrome 即创建 cookie 失败,但使用 FF
【发布时间】:2009-05-27 19:07:35
【问题描述】:

我们使用以下代码来创建安全 cookie。在暂存环境中一切正常,但是在生产环境中,以下代码无法在 Safari、Chrome 或 IE 中创建 cookie,但它确实在 Firefox 中成功创建了 cookie。你们认为我在这里遗漏了什么或有什么问题吗?

public static void SetAuthenticationCookie(CustomIdentity identity)
        {
            ConfigSettings configSettings = ConfigHelper.GetConfigSettings();

            string cookieName = configSettings.CookieName;
            if (cookieName == null || cookieName.Trim() == String.Empty)
            {
                throw new Exception("CookieName entry not found in Web.config");
            }

            string cookieExpr = configSettings.CookieExpiration.ToString();

            string encryptedUserDetails = Encrypt(identity);

            HttpCookie userCookie = new HttpCookie(cookieName.ToUpper());
            if (cookieExpr != null && cookieExpr.Trim() != String.Empty)
            {
                userCookie.Expires = DateTime.Now.AddMinutes(int.Parse(cookieExpr));
            }
            userCookie.Values["UserDetails"] = encryptedUserDetails;
            userCookie.Values["Culture"] = configSettings.Customer.Culture;

            MyContext.Current.Response.Cookies.Add(userCookie);
        }

【问题讨论】:

    标签: c# cookies cross-browser


    【解决方案1】:

    Safari 和 IE8 默认不接受第三方 cookie。

    当您使用 JSONP 调用另一个域时,该脚本设置的每个 cookie 都将被 Safari 和 IE8 阻止。对此您无能为力(在 IE8 中,您可以添加 P3P 策略,但这在 Safari 中不起作用)。

    有一些解决方法可以跨 JSONP 调用维护状态,但它非常复杂(您必须手动管理状态并在被调用的 javascript 中使用 document.cookie)

    作为替代方案,您可以要求您的用户降低其浏览器中的隐私设置,但恕我直言,这不值得考虑。

    【讨论】:

    【解决方案2】:

    您是否检查过您是否有 Web Developer 插件和禁用的 cookie?还是在 FF 中禁用了 cookie?

    【讨论】:

    • 所有浏览器都启用了cookies。奇怪的是,它在 staging & prod 服务器中的代码相同,但它只在除 FF 之外的所有浏览器的 prod 中出现问题
    【解决方案3】:

    我发现这个问题与服务器的 UTC 日期/时间不正确有关。无论服务器日期/时间如何,Firefox 都接受,但如果日期/时间超出一定的误差范围,其他浏览器将不会设置 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多