gpt4 book ai didi

ssl - Cookie 在我网站上的 HTTPS 页面上不起作用 (C#)

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:35 24 4
gpt4 key购买 nike

我的网站(针对客户)有提醒,仅在用户每天第一次访问该网站时显示,因此他们加载的第一个页面会生成 cookie,并在所有后续页面上生成,只要cookie 存在(并且 cookie 上的日期与当前日期匹配),则不会显示警报。

网站上的一些页面使用 https,例如捐赠页面。在这些页面上,警报总是会出现。我认为这是因为 cookie 被阻止了。我该如何解决这个问题?这是我用于 cookie 的代码:

var cookie = HttpContext.Current.Request.Cookies["CHKD-Alert"];

// if cookie does not exist, create cookie
if (cookie == null)
{
HttpCookie alertCookie = new HttpCookie("CHKD-Alert");
alertCookie.Expires = DateTime.Now.AddDays(1d);
alertCookie["dateSet"] = DateTime.Now.Date.ToShortDateString();
HttpContext.Current.Response.SetCookie(alertCookie);
AlertStyle = "display: block;";
}
else
{
var dateSet = cookie["dateSet"];
// if alert has already been shown
if (cookie["dateSet"] != null && cookie["dateSet"] == DateTime.Now.Date.ToShortDateString())
{
AlertStyle = "display: none;";
}
else
{
AlertStyle = "display: block;";
Response.Cookies["CHKD-Alert"]["dateSet"] = DateTime.Now.Date.ToShortDateString();
}
}

ux_alerts.DataSource = alerts;
ux_alerts.DataBind();

编辑:我为 HTTPS 页面添加了第二个 cookie:

            var cookie = HttpContext.Current.Request.Cookies["CHKD-Alert"];
var secureCookie = HttpContext.Current.Request.Cookies["CHKD-Alert-Secure"];

// if cookie does not exist, create cookie
if (cookie == null)
{
HttpCookie alertCookie = new HttpCookie("CHKD-Alert");
alertCookie.Expires = DateTime.Now.AddDays(1d);
alertCookie["dateSet"] = DateTime.Now.Date.ToShortDateString();
HttpContext.Current.Response.SetCookie(alertCookie);
AlertStyle = "display: block;";
}
if (secureCookie == null)
{
HttpCookie alertCookieSecure = new HttpCookie("CHKD-Alert-Secure");
alertCookieSecure.Secure = true;
alertCookieSecure.Expires = DateTime.Now.AddDays(1d);
alertCookieSecure["dateSet"] = DateTime.Now.Date.ToShortDateString();
HttpContext.Current.Response.SetCookie(alertCookieSecure);
AlertStyle = "display: block;";
}
if (cookie != null || secureCookie != null)
{
var dateSet = cookie["dateSet"];
// if alert has already been shown
if ((cookie != null && cookie["dateSet"] != null && cookie["dateSet"] == DateTime.Now.Date.ToShortDateString()) ||
(secureCookie != null && cookie["dateSet"] != null && secureCookie["dateSet"] == DateTime.Now.Date.ToShortDateString()))
{
AlertStyle = "display: none;";
}
else
{
AlertStyle = "display: block;";
Response.Cookies["CHKD-Alert"]["dateSet"] = DateTime.Now.Date.ToShortDateString();
Response.Cookies["CHKD-Alert-Secure"]["dateSet"] = DateTime.Now.Date.ToShortDateString();
}
}

但警告仍会在 HTTPS 页面首次加载时显示。在那之后他们不显示,这是一个改进,但我不希望他们第一次显示,如果网站上的另一个页面已经被访问过。只要 HTTP cookie 存在,HTTPS cookie 就应该存在

最佳答案

在 C# 中的 HttpCookie 类中有一个 Secure允许您通过 HTTPS/SSL 获取和设置 cookie 的属性。我相信您需要设置条件以通过这些 HTTPS 页面以及 HTTP 页面设置和获取 cookie。

通过 HTTPS 设置的 Cookie 应该只在 HTTP 上工作,所以也许只需使用 Secure 创建一个 cookie。听起来好像因为没有设置,所以默认情况下只在 HTTP 页面上设置 cookie。

关于ssl - Cookie 在我网站上的 HTTPS 页面上不起作用 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com