如何以编程方式测试cookie?

9
如何检查/检测用户是否接受Cookie? 使用ASP.NET (C#)。
3个回答

16

来自MSDN

确定浏览器是否接受Cookie的一种方法是尝试写入Cookie,然后再尝试读取它。如果您无法读取您写入的Cookie,则假定浏览器已关闭Cookie。

write:

Sub Page_Load()
   If Not Page.IsPostBack Then
      If Request.QueryString("AcceptsCookies") Is Nothing Then
           Response.Cookies("TestCookie").Value = "ok"
           Response.Cookies("TestCookie").Expires = _
              DateTime.Now.AddMinutes(1)
           Response.Redirect("TestForCookies.aspx?redirect=" & _
              Server.UrlEncode(Request.Url.ToString))
      Else
           labelAcceptsCookies.Text = "Accept cookies = " & _
              Request.QueryString("AcceptsCookies")
      End If
   End If
End Sub

然后阅读

Sub Page_Load()
    Dim redirect As String = Request.QueryString("redirect")
    Dim acceptsCookies As String
    ' Was the cookie accepted?
    If Request.Cookies("TestCookie") Is Nothing Then
        ' 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)
    End If
    Response.Redirect(redirect & "?AcceptsCookies=" & acceptsCookies, _
       True)
End Sub

1
如果数据传输由于某些原因(如网络负载)停顿超过一分钟,它将无法正常工作。可以考虑增加更长的时间。 - user151323
1
请进行检查以确保人们不会将您的重定向页面用于不良用途,例如重定向到钓鱼网站等。 - Fredou
似乎不可能。我试图防止写入会话和Cookie,如果我知道Cookie可以工作。我想我需要同时编写两者。 - user34537

1

将一个值保存到cookie中,重定向到某个页面并尝试读取该值。如果成功,说明启用了cookie。否则,未启用。


0
  1. 创建一个
  2. 尝试读取它?

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