gpt4 book ai didi

asp.net - 触发表单例份验证的 User-Agent header 中的更改

转载 作者:行者123 更新时间:2023-12-04 17:56:43 24 4
gpt4 key购买 nike

我有一个使用 ASP.NET MVC 3.0 构建的应用程序。它使用asp.net 的内置表单例份验证,没有 session 状态和浏览器上的cookie 来识别发出请求的用户。

现在,当我使用 IE9 测试应用程序时,典型的 HTML 请求会在 header 中发送此用户代理,并且一切正常。

用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)

但是,我们在应用程序中有一个页面,其中有一个 ActiveX 容器,用于在浏览器中托管 Microsoft Word。这个 ActiveX 容器的目的是允许您对 word 文档进行修改,单击按钮将带有更改的 word 文档发布到我们的服务器,以便保存。

ActiveX 控件中有一个方法——来自 www.ocxt.com 的 Office 查看器组件——称为 HttpPost(),它可以将查看的文档的内容发布到服务器。

当您调用 HttpPost() 时,它会正确发送所有相同的 cookie,但使用不同的 User-Agent 字符串。

用户代理:Mozilla/4.0(兼容;MSIE 5.5;Windows NT 4.0)

使用 MSIE 5.5 字符串的 UserAgent 似乎导致 ASP.NET 或 MVC 不将请求发送到适当的 Controller ,而是将重定向响应发送到登录页面,即使 session 的 cookie 是正确的。我用 Fiddler 做了一个测试,并尝试使用 MSIE 6.0、7.0、8.0,这些似乎工作正常,所以具体来说,5.5 会导致部分服务器堆栈重定向到登录页面。

这个页面过去工作得很好,所以我不确定最近版本的 ASP.NET/MVC 是否有什么变化,还是因为我已经升级到 IE9.0,但基本上,我想知道如果可以告诉 ASP.NET 在确定 session 是否已经通过身份验证时不考虑用户代理。

谢谢。

最佳答案

IIRC 在 ASP.NET 4.0 中发生了变化,其中 Forms 身份验证使用用户代理来检测它是否支持 cookie,如果它不是公认的或不受支持的用户代理,则它根本不使用身份验证 cookie。您将需要更改 HTTP 请求的用户代理。

关于asp.net - 触发表单例份验证的 User-Agent header 中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com