【问题标题】:Check if browser accepts cookies检查浏览器是否接受 cookie
【发布时间】:2011-10-21 07:47:41
【问题描述】:

有没有一种方法可以检查浏览器是否允许 cookie。

Request.Browser.Cookies 

在禁用 cookie 时不起作用。它说浏览器可以支持它们。

我能想到的唯一另一件事是尝试设置一个测试 cookie,然后检查它是否已设置。

是否有办法确保 cookie 确实已启用。

【问题讨论】:

  • 确定cookie是否被接受的一种方法是尝试写入一个cookie,然后再次尝试读回它。如果您无法读取您编写的 cookie,则您认为浏览器中的 cookie 已关闭。
  • 这并不奇怪,唯一的答案是写出 cookie 并在您考虑 cookie 的工作原理时尝试将其读回 - 一个 http 响应设置一个带有标题,然后浏览器只吐出当它从那个 exac 相同的域名请求时返回 - 如果三个是另一种方法,那么 cookie 对于身份验证等事情就不会有好处

标签: c# asp.net browser cookies


【解决方案1】:

根据 MSDN,无法确定用户是否允许或禁用 cookie。找到它的唯一方法是先写然后再读。

查看“确定浏览器是否接受 Cookie”here 部分。

它还有一些示例,展示了如何读取和写入 cookie,并说明:

Cookies 属性不指示是否启用 cookie。它 仅表示当前浏览器是否天生支持 饼干。

【讨论】:

    【解决方案2】:

    HttpCapabilitiesBase.Cookies 属性获取一个值,该值指示浏览器是否支持 cookie。 See the documentation.

    【讨论】:

    • 来自文档:“Cookies 属性指示浏览器应用程序是否支持 cookie。如果用户在其应用程序中禁用了 cookie,则 Cookies 属性不会受到影响。”
    【解决方案3】:

    正如大家所说,您基本上需要设置、重定向、检测(除非您只需要客户端检测,在这种情况下,javascript 可以进行检查) 有a control for this someone wrote.

    【讨论】:

      【解决方案4】:

      我不知道其他方法: 设置cookie,检查cookie是否存在。

      【讨论】:

        【解决方案5】:

        我不知道在 asp.NET 中有什么方法可以做到这一点。您所能做的就是创建一个 cookie 并尝试在回发中读取它。
        您可以看到如何做到这一点的示例(这是在 vb.NET 中,但我相信您可以在 google 和 C# 中找到许多其他示例):http://forums.asp.net/t/1044823.aspx

        【讨论】:

        • 到目前为止,这似乎是唯一的选择。
        • @Dietpixel:我在多次检查前后都遇到过这个问题,我意识到这是我最好和最简单的选择(如果不是唯一的选择)。
        猜你喜欢
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 2021-06-05
        • 2019-11-17
        • 1970-01-01
        • 2023-03-14
        • 2016-11-20
        相关资源
        最近更新 更多