加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 更改User-Agent标头触发表单身份验证

发布时间:2020-12-16 07:16:15 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用ASP.NET MVC 3.0构建的应用程序.它使用asp.net的内置表单身份验证,没有会话状态,并在浏览器上使用cookie来识别发出请求的用户. 现在,当我使用IE9测试应用程序时,典型的HTML请求会在标头中发送此用户代理,一切正常. 用户代理:Mozilla / 5.0(兼容
我有一个使用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请求的用户代理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读