ASP.NET 中的 Request.Browser.Cookies 属性有多可靠?

Ras*_*sto 5 .net c# asp.net cookies httprequest

Request.Browser.Cookies属性(类型bool)属性存储信息是否客户端的浏览器支持cookies和他们是否被启用。

房产的可靠性如何Request.Browser.Cookies?能保证正确吗?或者我应该在这个问题中实现 Software Monkey 建议的重定向技术?

请注意:这不是“cookies 可靠吗”的问题?这是一个问题:“用户浏览器是否接受cookies的信息可靠吗?”

Ric*_*ard 2

修改后的问题,一个新的答案:

文档属性HttpBrowserCapabilitiesBase.Cookies说:

该属性并不指示浏览器当前是否启用cookie,仅指示浏览器是否可以支持cookie。

它似乎是基于对用户浏览器的检测和服务器上的浏览器能力数据库来设置的。因此,当且仅当满足以下条件时,它才会可靠地告诉您浏览器是否能够存储 cookie:

  1. 请求的用户代理字符串正确。
  2. 浏览器位于数据库中,并且数据库对于浏览器来说是正确的。

如果用户代理 HTTP 标头发生更改(例如通过开发人员工具或代理),则条件 #1 将会被破坏。如果浏览器比数据库新,或者数据库存在缺陷,则条件 #2 将会被破坏。

tl;dr 版本:没有保证,将此信息视为“尽力而为”。当然,用户可以禁用 cookie(例如“私密”浏览模式)。


另一个问题的原始答案:

如果您想依赖在响应中发送的 cookie 始终返回完全相同的结果,那么答案是:通常,但不要依赖于此。

可能的原因:

  • 仅非 HTTP 的 cookie 可以通过客户端脚本进行修改(并且该脚本可以在本地注入)。
  • 浏览器错误。
  • 使用非浏览器发出wget.exe不为用户处理 cookie 的请求(例如)。
  • 修改请求或响应的代理。
  • 客户端系统上的本地时钟被修改导致 cookie 过期。
  • 用户修改浏览器的 cookie 存储。