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

标签 c# javascript asp.net .net c#-4.0

我正在使用 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/

相关文章:

C# - 跳过最后 X 行的 Linq 语句

c# - vb.net web 应用程序和 c# .net webapps 有什么区别

javascript - 如何从另一个 php 文件重新加载页面

c# - 带有 HiddenField 的中继器

javascript - 具有动态 ID 的 getElementByID

c# - 如何为计算机视觉开发 AForge.NET

c# - 互操作 Excel .Find() 整体匹配未找到值,部分匹配找到

javascript - 如何使用 jQuery 函数更改 id 名称?

javascript - HTML 整页缩放取决于屏幕分辨率

c# - 两次跟进的差值(转为小数)