如何通过C#代码删除外部网站的Cookies

3
我有一个用于Windows Azure认证的身份验证页面,其中在https://login.microsoftonline.com/login.srf?wa=wsignin1.0&wtrealm=上执行认证......成功认证后,我们将重定向到我们的网站。
我们需要删除在此URL上生成的cookie以进行注销。有人能否提供通过该代码删除外部站点cookie的方法。
我们尝试使用以下代码进行删除,但未能成功。
public void deleteallcookies()
{
    int limit = Request.Cookies.Count; 
    HttpCookie aCookie;   //Instantiate a cookie placeholder
    string cookieName;   

    //Loop through the cookies
    for(int i = 0; i < limit; i++)
    {
        cookieName = Request.Cookies[i].Name;    //get the name of the current cookie
        aCookie = new HttpCookie(cookieName);    
         aCookie.Value = "";    //set a blank value to the cookie 
        aCookie.Expires = DateTime.Now.AddDays(-1);    

        Response.Cookies.Add(aCookie);    //Set the cookie
    }
}
1个回答

2

您想从响应中获取cookie而不是请求,即:

cookieName = Response.Cookies[i].Name; 

您还可以稍微更优雅地列举如下:
string[] myCookies = HttpContext.Current.Request.Cookies.AllKeys;
foreach (string cookieName in myCookies)
{
      var cookie = HttpContext.Current.Response.Cookies[cookieName];
      if (cookie != null)
      {
            cookie.Value = "";
            cookie.Expires = DateTime.Now.AddDays(-1);
      }
}

以上代码也无法删除外部网站的cookies,通过这段代码我们只能删除我们自己网站的cookies。 - Abhishek
你可能认为你不能删除不属于你域的cookie。 - dove
我们是否可以删除不属于我们域的 cookie? - Abhishek
考虑一下,这将是一个相当大的安全漏洞。 - dove

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接