c# - 使用 safari、chrome 创建 cookie 失败,即使用 FF

标签 c# cookies cross-browser

我们使用以下代码来创建安全 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);
        }

最佳答案

默认情况下,Safari 和 IE8 不接受第三方 cookie。

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

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

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

关于c# - 使用 safari、chrome 创建 cookie 失败,即使用 FF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917475/

相关文章:

java - java上http post方法、HttpServletResponse和cookie的问题

security - 小书签方法

css - 在非 webkit 浏览器中停用默认样式

c# - 在 SSIS .net 脚本任务中格式化 Excel 列

c# - 每个 Web 请求一个 DbContext ......为什么?

vue.js - 此 set-cookie 被阻止,因为它具有 samesite=lax

java - 如何使浏览器从 Java applet 导航到给定的 URL?

c# - 在 Linq 中子查询的有效方法

c# - 仅 SELECT 可视化查询生成器背后的逻辑是什么?

php - 当 PHP 中没有事件时 session 过期