Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET中Request.Browser.Cookies属性的可靠性如何?_C#_.net_Asp.net_Cookies_Httprequest - Fatal编程技术网

C# ASP.NET中Request.Browser.Cookies属性的可靠性如何?

C# ASP.NET中Request.Browser.Cookies属性的可靠性如何?,c#,.net,asp.net,cookies,httprequest,C#,.net,Asp.net,Cookies,Httprequest,属性(类型为bool)属性存储客户机浏览器是否支持cookie以及是否启用cookie的信息 属性Request.Browser.Cookies的可靠性如何?它保证是正确的吗?或者我更应该实现软件Monkey在中建议的重定向技术 请注意:这不是一个问题“Cookie可靠吗?”这是一个问题:“用户浏览器是否接受Cookie的信息可靠吗?”对于修改后的问题,新的答案是: 文档属性表示: 此属性不指示浏览器中当前是否启用了Cookie,只指示浏览器是否支持Cookie 它似乎是根据检测到的用户浏览器和

属性(类型为
bool
)属性存储客户机浏览器是否支持cookie以及是否启用cookie的信息

属性
Request.Browser.Cookies
的可靠性如何?它保证是正确的吗?或者我更应该实现软件Monkey在中建议的重定向技术


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

对于修改后的问题,新的答案是:

文档属性表示:

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

它似乎是根据检测到的用户浏览器和服务器上的浏览器功能数据库设置的。因此,它将可靠地告诉您浏览器是否能够存储cookie,如果且仅当:

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

    tl;dr版本:无法保证,请将此信息视为“尽最大努力”。当然,用户可能已经禁用了cookie(例如“在私人”浏览模式下)


    另一个问题的原始答案:

    如果你想依赖于你发送的cookies的回复总是一模一样,那么答案是:通常,但不要依赖于此

    可能的原因:

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

      • 我知道人们没有理解你问题的要点。但你似乎对这种方法的可靠性有怀疑。我的意思是,我可以问“Request.QueryString可靠吗?它会返回请求URL中的所有参数吗?”答案是“是”,除非您有一些与此相矛盾的信息。那么您是否有Request.Browser.Cookies不可靠的信息?据我所知是这样的。您是否遇到过它不能正常工作的情况?

        请定义什么行为的可靠性/保证。它是否总是正确设置?也就是说,信息只能从请求中获得。只有浏览器才能把它放在那里。我想问的是,是否必须始终设置此信息,或者在某些情况下浏览器不设置此信息。例如,因为它不支持,或者因为用户已将其浏览器配置为不将此信息发送到服务器。您是否可以使用不同的浏览器设置一些测试用例,以“感觉”它是否工作?同时,如果需要很长时间才能得到答案。@Phil:这是个好主意,但我一直在这里回答评论:)我需要安装一些文本浏览器,因为我只有可能支持它的主要浏览器,这需要一些时间。无论如何,我想理查兹最后的答案对我来说已经足够好了,如果没有人想添加更多的信息。我扣动扳机自杀了。我不认为这是对我问题的回答。我有一种感觉,人们不理解我的要求,但我不知道如何让它更清楚。。。我已经编辑了这个问题。我不在乎cookies本身是否安全,或者它们是否可以修改,或者它们是否可靠。我在问
        Request.Browser.Cookies
        中存储的信息是否可靠。如果用户浏览器支持cookies,则该属性应为
        true
        ,否则为
        false
        。它不存储Cookie。@drasto:您是想问“ASP.NET浏览器功能数据库中的信息是否保证客户端能够对Cookie进行任意请求”?是的,我想您已经知道了。请同时阅读我的其他评论,这样我就不必重复了。谢谢你,现在已经很完美了。我以后可能会接受。我会等一等,给你一个机会,让你为投票获得额外的声誉(投票的人不会读太多被接受的问题)。哈哈,是的,我知道。您通常希望避免使用cookies。这是一项古老的技术。正如我在另一篇评论中所建议的,有关浏览器功能的信息是从浏览器本身获得的。因此,这取决于浏览器是否发送有关禁用cookie的信息。我可以有一个忽略cookie的浏览器,但仍然发送启用cookie的信息。如果有这样的浏览器被广泛使用,那么我的问题的答案是“不,它不可靠”,否则答案是“是的,它是可靠的,你不需要使用RedRecion技术对它进行双重检查”。我会说有很多不同的浏览器(除了“四大”之外)不支持Cookie或不正确地报告其支持。我不知道框架中的browsercap定义是否涵盖了所有这些,所以我想如果进行二次检查,您会更安全。@Brian McCarthy:我应该避免使用cookies?Cookie是旧技术吗?那么在你看来,我应该用什么来代替它们呢?@drasto我很确定browsercaps并没有涵盖所有可能的浏览器版本和组合,这就是为什么你的二次检查是个好主意。就像Richard所说的,你所问的这个方法是“尽最大努力”的,永远不会100%万无一失。一般来说,我只是试试看