gpt4 book ai didi

c# - 使用 Javascript 创建的 Cookie 无法在 C# 代码中访问....有什么原因或其他选择吗?

转载 作者:行者123 更新时间:2023-11-29 18:26:52 25 4
gpt4 key购买 nike

我正在使用 cookie,我碰巧使用 JavaScript 创建它,但是当我在我的过程完成后尝试使该 cookie 过期时,使用 C# 代码隐藏文件,我无法找到指定的 Cookie??

这可能是什么原因?我认为用 JavaScript 创建的 cookie 无法使用 C# 访问/可见 ...?是真的吗??

这是我在 JS 中创建 cookie 的代码

var expiryDate = new Date();
expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 365 days
document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";";

这是我用于查找和过期 cookie 的 C# 代码

public void DeleteCookie(string Name) 
{
if (System.Web.HttpContext.Current.Request.Cookies["ReferedCookie"] != null)
{
HttpCookie myCookie = new HttpCookie(Name);
myCookie.Expires = DateTime.Now.AddDays(-5d);
System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
}
}

提前致谢。

最佳答案

问题可能出在 cookie 的 Path 属性上。

当使用 Javascript 设置 cookie 时,cookie 的默认路径将基于设置 cookie 的页面的位置。

为了使该 cookie 过期,您必须指定相同的路径。所以如果你有一个页面:

http://test.foo.com/somepath/default.asxp

并且您使用问题中的 javascript 代码在此页面上设置 cookie,cookie 的默认路径为:

/somepath/

这意味着浏览器会将此 cookie 发送到该路径下的所有页面。它不会被发送到该路径之外的页面。

要使来自服务器的这个 cookie 过期,你需要指定 cookie 的路径:

HttpCookie myCookie = new HttpCookie(Name);   
myCookie.Expires = DateTime.Now.AddDays(-5d);
myCookie.Path = "/somepath/";
System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);

或者,您必须在最初将 cookie 设置为(例如)/ 时指定路径:

document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";path=/";

然后在同一路径上过期。

关于c# - 使用 Javascript 创建的 Cookie 无法在 C# 代码中访问....有什么原因或其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176580/

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