如何检查浏览器是否在web应用程序中启用了Cookie

本文关键字:应用程序 web 启用 Cookie 是否 何检查 检查 浏览器 | 更新日期: 2023-09-27 18:26:47

我决定重写这个问题,因为我发现了一些关于如何完成上述任务的信息:http://msdn.microsoft.com/en-us/library/aa289495%28v=vs.71%29.aspx

然而,我的问题是,我正在尝试对Login.aspx.csPage_Load事件执行所有这些操作。

起初,它似乎运行良好,直到我尝试通过输入凭据并单击"登录"按钮来实际登录。然后所有的地狱之旅都失败了,我陷入了无尽的循环。它一直在Login.aspx.csTestForCookies.aspx.cs上的Page_Loads之间来回移动。每次重定向URL增加一个"?AcceptCookies=1"。有解决办法吗?

登录.aspx.cs代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Request.QueryString["AcceptsCookies"] == null)
        {
            Response.Cookies["TestCookie"].Value = "ok";
            Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1);
            Response.Redirect(BasePage.ResolveUrl("~/Common/TestForCookies.aspx?redirect=" + Server.UrlEncode(Request.Url.ToString())));
        }
        else
        {
            LoginBox.InstructionText = "Accept cookies = " + Request.QueryString["AcceptsCookies"];
        }
    }
}

TestForCookies.aspx.cs代码:

protected void Page_Load(object sender, EventArgs e)
{
    string redirect = Request.QueryString["redirect"];
    string acceptsCookies = null;
    // Was the cookie accepted?
    if (Request.Cookies["TestCookie"] == null)
    {
        // No cookie, so it must not have been accepted
        acceptsCookies = "0";
    }
    else
    {
        acceptsCookies = "1";
        // Delete test cookie
        Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1);
    }
    string url = redirect + "?AcceptsCookies=" + acceptsCookies;

    Response.Redirect(url);
}

如何检查浏览器是否在web应用程序中启用了Cookie

这可能很麻烦。我在登录页面上所做的基本上是以下步骤:

  1. 在"登录"上,单击张贴回服务器,验证用户的凭据。如果登录成功
  2. 设置我的cookie并发送JS,点击隐藏的"确认cookie"按钮返回浏览器。这是一个额外的往返行程,但cookie应该是双向有效负载的一部分
  3. 回到服务器上的"确认cookie"按钮的处理程序中,我检查cookie。如果它在那里,我们很好,我重定向。如果没有,我会发回内容,说cookie被禁用,并附上如何启用它们的链接

希望这能有所帮助!

我想我解决了这个问题。由于URL地址格式错误,重定向没有正确完成。

登录.aspx.cs

    if (!Page.IsPostBack)
    {
        if (Request.QueryString["AcceptsCookies"] != null)
        {
            if (Request.QueryString["AcceptsCookies"].ToString() == "0")
            {
                LoginBox.InstructionText = Resources.Resource.Login10;
            }
        }
        else
        {
            Response.Cookies["TestCookie"].Value = "ok";
            Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1);
            string url = Request.Url.ToString();
            url = url.Replace("ReturnUrl", "AcceptsCookies=&ReturnUrl");
            Response.Redirect(BasePage.ResolveUrl("~/Common/TestForCookies.aspx?redirect=" + Server.UrlEncode(url)));
        }
    }

TestForCookies.aspx.cs

    string redirect = Request.QueryString["redirect"];
    string acceptsCookies = null;
    // Was the cookie accepted?
    if (Request.Cookies["TestCookie"] == null)
    {
        // No cookie, so it must not have been accepted
        acceptsCookies = "0";
    }
    else
    {
        acceptsCookies = "1";
        // Delete test cookie
        Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1);
    }
    redirect = redirect.Replace("AcceptsCookies=", "AcceptsCookies=" + acceptsCookies);
    Response.Redirect(BasePage.ResolveUrl(redirect), true);
}