asp.net – 更改User-Agent标头触发表单身份验证
我有一个使用ASP.NET MVC 3.0构建的应用程序.它使用asp.net的内置表单身份验证,没有会话状态,并在浏览器上使用cookie来识别发出请求的用户.
现在,当我使用IE9测试应用程序时,典型的HTML请求会在标头中发送此用户代理,一切正常. 用户代理:Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0) 但是,我们在应用程序中有一个页面,其中包含一个在浏览器中托管Microsoft Word的ActiveX容器.此ActiveX容器的目的是允许您对单词文档进行修改,单击按钮以将该单词文档与您对服务器的更改进行POST,以便可以保存它. ActiveX控件中有一种方法 – 来自www.ocxt.com的Office Viewer Component – 称为HttpPost(),它将查看文档的内容发布到服务器. 当您调用HttpPost()时,它会正确发送所有相同的cookie,但使用不同的User-Agent字符串. User-Agent:Mozilla / 4.0(兼容; MSIE 5.5; Windows NT 4.0) 使用MSIE 5.5字符串的UserAgent似乎导致ASP.NET或MVC不将请求发送到适当的控制器,而是向Login页面发送重定向响应,即使cookie对于会话是正确的.我使用Fiddler进行了测试,并尝试使用MSIE 6.0,7.0,8.0,这些似乎工作正常,因此具体来说,5.5会导致部分服务器堆栈重定向到登录页面. 这个页面以前工作正常,所以我不确定最近的ASP.NET / MVC版本是否有变化,或者是因为我已经升级到IE9.0,但基本上,我想知道如果可以告诉ASP.NET在确定会话是否已经过身份验证时不考虑User-Agent. 谢谢. 解决方法
IIRC在ASP.NET 4.0中有一个变化,其中Forms Authentication使用用户代理来检测它是否支持cookie,如果它不是已识别或不受支持的用户代理,则它根本不使用身份验证cookie.您需要更改HTTP请求的用户代理.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC 5自定义错误页面
- asp.net-mvc – 如何使用角度路由来嵌套3个mvc剃须刀模型
- asp.net-mvc-3 – DbContext使用Ninject的InRequestScope()
- asp.net-mvc – 路由:如何在url中隐藏动作名称?
- asp.net-mvc – 使用breeze js不直接与DBContext交互
- 如何使用ASP.NET MVC Web API OData链接到Razor中的OData集
- 当我尝试调试ASP.NET程序时,为什么Internet Explorer(或其他
- ASP.NET MVC3对模型的更改
- asp.net-mvc – 从Action写入输出流
- asp-classic – XP经典ASP上的IIS 5.1似乎处于单线程模式
- ASP.NET Web服务中的可选参数
- 如何在ASP.Net MVC标记中克服我对<%%>的恐惧?
- asp.net-mvc – 编辑器在没有@foreach的情况下不
- asp.net-mvc – 是否可以将XDocument作为参数传递
- asp.net-mvc – 实体框架 – 如何防止创建列的模
- AllowOnlyAlphanumericUserNames – 如何设置?
- asp.net – 密码和确认密码
- asp.net – Microsoft EDGE – 访问此资源所需的
- .NET中的FileUpload控件的使用-Jquery(一)
- asp.net-mvc – 要查看的ASP.NET MVC 2控制器:I