检查浏览器是否接受 cookie。

5

有没有办法可以检查浏览器是否允许使用cookies。

Request.Browser.Cookies 

当禁用cookie时无法工作。它说浏览器可以支持它们。

我能想到的唯一解决办法是尝试设置一个测试cookie,然后检查它是否已设置。

有没有办法确保cookie实际上已启用。


2
确定浏览器是否接受cookie的一种方法是尝试写入一个cookie,然后再尝试读取它。如果您无法读取您写入的cookie,则假定浏览器已关闭cookie功能。 - Shekhar_Pro
1
当你考虑到cookie的工作原理时,唯一的答案是将cookie写出并尝试在需要时读取它 - 一个http响应设置了一个带有头部的cookie,然后浏览器只会在从完全相同的域名请求时返回该cookie - 如果还有其他方法来实现,那么cookie就不适用于身份验证等事情。 - Aaron Anodide
5个回答

9
根据MSDN的说法,无法确定用户是否允许或禁用cookie。唯一的方法是通过编写并读取cookie来找出它是否被启用。
请查看“确定浏览器是否接受Cookie”此处部分。
它还提供了示例,展示如何读写cookie,并指出:
Cookies属性不表示cookie是否已启用。它仅表示当前浏览器是否本质上支持cookie。

2

我不知道在asp.NET中有任何方法来做到这一点。您可以创建一个cookie并尝试在postback中读取它。
您可以查看如何实现此操作的示例(这是使用vb.NET编写的,但我相信您可以在谷歌上找到许多其他示例和C#):http://forums.asp.net/t/1044823.aspx


到目前为止,这似乎是唯一的选择。 - Dietpixel
@Dietpixel:我之前也遇到过这个问题,经过多次检查后发现这是我最好和最简单的选择(如果不是唯一的选择)。 - Naor

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

1

0

HttpCapabilitiesBase.Cookies 属性获取一个值,指示浏览器是否支持 cookies。请参阅文档。


从文档中: "Cookies属性表示浏览器应用程序是否支持cookies。如果用户在应用程序中禁用了cookies,则不会影响Cookies属性。" - Max Strater

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