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

标签 asp.net asp.net-mvc activex

我有一个使用 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/

相关文章:

c# - 在 gridview asp.net mvc c# 的 jquery 中查找元素

asp.net-mvc - ASP.NET MVC 中的哪些 View 引擎拥有最多的支持、文档和路线图?

html - 通过浏览器在 iPhone 或其他移动设备中打开谷歌地图或苹果 map

c# - Razor 语法 PHP 等价物

PostgreSQL 和 dev.nauck.AspSQLProvider 的 ASP.NET 成员资格

javascript - 如何在浮线图中的x轴上显示时间?

javascript - 使用 JavaScript 对数字进行排序

c# - ASP :GridView BoundField with custom objects?

javascript - 通过javascript(activexobject)创建Excel单元格时如何自定义日期格式?

c++ - 如何跟踪进程创建的 ActiveX 控件?