我们有一个 ASP.NET 应用程序,它在以前版本的 Internet Explorer 10 中没有任何问题。
但是相同的应用程序在 Internet Explorer 10 中不起作用。
当我调查这个问题时,我发现 .asmx Web 服务的引用得到 401-unauthorized 错误。
IE10 有问题的请求和 IE9 的工作请求之间的唯一区别是:User-Agent 字符串。
让我告诉你区别:
下面的请求是 IE10 的有问题的请求。
GET http://abc.com/Services/ResourceService.asmx/jsdebug HTTP/1.1
Accept: application/javascript, */*;q=0.8
Referer: http://abc.com/def/ghi.aspx
Accept-Language: tr-TR
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Connection: Keep-Alive
DNT: 1
Host: sgmiis2:8090
Cookie: .ASPXANONYMOUS=XXXASP.NET_SessionId=YYY;ASPXAUTH=ZZZ;
它越来越
401 - 未经授权:由于凭据无效,访问被拒绝。
这是同一应用程序在 IE10 之前的请求。
GET http://abc.com/Services/ResourceService.asmx/jsdebug HTTP/1.1
Accept: application/javascript, */*;q=0.8
Referer: http://abc.com/def/ghi.aspx
Accept-Language: tr-TR
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/6.0;)
Connection: Keep-Alive
DNT: 1
Host: sgmiis2:8090
Cookie: .ASPXANONYMOUS=XXXASP.NET_SessionId=YYY;ASPXAUTH=ZZZ;
但是这个请求正在工作并且得到
HTTP/1.1 200 正常
如您所见,唯一的区别是用户代理标头的“MSIE 10.0”和“MSIE 7.0/MSIE 8.0/MSIE 9.0”部分。
我正在通过 Fiddler 的 Composer 部分创建请求。所以没有真正得到 401 错误的风险。(我的意思是错误的 cookie)因为当我只更改用户代理字符串时,我可以成功获得 HTTP 200 的响应。
知道如何解决这个问题吗?
谢谢,
法提赫。