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

时间:2011-03-11 16:32:04

标签: c# .net asp.net cookies httprequest

Request.Browser.Cookies属性(类型为bool)属性存储客户端浏览器是否支持cookie以及是否启用cookie的信息。

财产Request.Browser.Cookies的可靠性如何?它保证是正确的吗?或者我应该在this question

中实现Software Monkey建议的重定向技术

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

2 个答案:

答案 0 :(得分:2)

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

文档属性HttpBrowserCapabilitiesBase.Cookies说:

  

此属性不表示当前是否在浏览器中启用了Cookie,只表示浏览器是否支持Cookie。

它似乎是根据用户浏览器和服务器上的浏览器功能数据库的检测来设置的。因此,只有在以下情况下,它才能可靠地告诉您浏览器是否能够存储cookie:

  1. 请求的用户代理字符串是正确的。
  2. 浏览器在数据库中,数据库对浏览器是正确的。
  3. 如果用户代理HTTP标头已更改(例如,通过开发人员工具或代理),则条件#1将被破坏。如果浏览器比数据库新,或者数据库中存在缺陷,则条件#2将被破坏。

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


    其他问题的原始答案:

    如果你想依赖你在回复中发送的完全相同的cookie,那么答案是:通常,但不要依赖于此。

    可能的原因:

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

答案 1 :(得分:1)

我知道人们没有得到你问题的要点。但您似乎对方法的可靠性存有疑虑。我的意思是,我可以问“Request.QueryString是否可靠?它会返回请求URL中的所有参数吗?”答案是肯定的,除非你有一些与之相反的信息。所以你有Request.Browser.Cookies不可靠的信息吗?据我所知。您遇到过无法正常工作的情况吗?