IE 11 请求语言zh-Hans-CN所引发的问题及解决方案

转自:https://blog.csdn.net/xiaoyw71/article/details/51859342

写在前面

首先感谢问题最终解决人:田志辉(音泰思公司【日本】)、白军(北京音泰思)

感谢常先魏(上海辛诺)、王铭孜(OpenText 中国)、Tarun Nagalla(OpenText)、Pavan Chilaka(OpenText)、张玉明(联通系统集成公司)在解决、分析问题过程中所提供的帮助。

感谢CSDN博客为技术交流提供的平台。

故事是这样的,去年(2015年)七月份,用户就提出将新系统(注:2014年规划设计,2015年年初开始实施)定位使用Win10操作系统,浏览器要支持IE11(微软Internet Explorer 11)。而合作伙伴却说Opentext Cordys BOP 4.3不支持IE11[1],而且没有没有解决方案。

由于设计方案中,界面部分采用HTML5+JS(JQuery)技术,绕开系统平台XForm技术,也能达到支持IE11要求。

但是,当去年年末,新系统上线后,当系统出现未控制到的错误时,将弹出XForm界面,或者,用户偶尔访问到系统管理平台界面,将发生问题[2]。

此问题也将会给生产环境带来隐患,也就是用户偶尔访问到系统管理平台界面时,将短时间内造成系统性能下降。

今年5月份,将此问题提交到OpenText技术支持,此后过程大致情况见《 IE 11 访问Cordys BOP 4.3 问题分析》 
描述。

再补充一点问题分析内容:英文、日文环境都无此现象。

昨日(7月7日),我在CSDN博客发表了《 IE 11 访问Cordys BOP 4.3 问题分析》博文,并分享到微信朋友圈。

很幸运,Intasect的白军把此文转给了田志辉,在这些友人的帮助下,问题得以解决。

产生问题的原因是 IE 11的HTTP RequestHeader Accept-Language 是 zh-Hans-CN,Cordys的SOAP请求不识别IE11请求中语言(language)zh-Hans-CN:

 
   
     
      10.64.50.153  
      organization=o=HLJ,cn=cordys,cn=defaultInst,o=hlcuc.com  
      o=HLJ,cn=cordys,cn=defaultInst,o=hlcuc.com  
      http://10.64.50.153:80/home/HLJ/  
      false  
      false  
      /com/cordys/cusp/cusp.caf  
      zh-Hans-CN 
   
 
 
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
注意IE11将zh-CN改为了zh-Hans-CN。

解决方案是设置Web网关服务语言转换,本系统使用Apache Http服务,因此,设置与Apache相关的配置即可。

[root@VMXPNSAPP ~]# vi /opt/Cordys/defaultInst/components/webgateway/Apache/cordys_apache.conf
1
# Cordys Apache 2.0 Configuration Settings

LoadModule deflate_module modules/mod_deflate.so

......


   Header set X-UA-Compatible "IE=EmulateIE8,IE=EmulateIE10"
   RequestHeader set Accept-Language "zh-CN,zh;q=0.8"


[1].《 Cordys对浏览器支持信息(Support information on latest browsers) 》,译 肖永威 2016.01

[2].《 IE 11 访问Cordys BOP 4.3 问题分析》 肖永威 2016.07

[3]. 百度.Accept-Language

  Accept-Language 是HTTP 请求里面的一个属性,用于告诉服务器浏览器可以支持什么语言。 如果网站支持多语种的话,可以使用这个信息来决定返回什么语言的网页 。

  Accept-Language: zh-CN,fr-FR;q=0.5这里zh-CN 是表示中文,fr-FR 是表示法语。 这是RFC1766定义的语言表示方式。默认情况下,IE使用Windows default locale 来决定Accept-Language 属性。Windows default locale 可以通过Win32 API函数 GetUserDefaultLCID 来取得。另外,shell API 提供 GetAcceptLanguages 函数来取得IE的Accept-Language 。
--------------------- 
作者:肖永威 
来源:CSDN 
原文:https://blog.csdn.net/xiaoyw71/article/details/51859342 
版权声明:本文为博主原创文章,转载请附上博文链接!

chrome查看网页header,鼠标右键打开审查元素,或快捷键Shift+Ctrl+I或者shift+ctrl+c
当我打开Network后,发现里面是空的什么也没有。
查了下,才知,需要刷新页面才能显示出来。

想了想也是应该,只有重新载入网页,chrome才能捕获header信息。

据说这个功能很好很强大,可以用来找到隐藏的视频文件源地址。很多非专业人士用审查元素好像也就是来干这个。

IE和FireFox查看页面header信息需要插件
IE:HttpWatch,Fiddler2
FireFox:Firebug
————————
chrome如何查看网页header信息
1,Shift+Ctrl+I 调出 我们牛逼的,性感代码式的调试工作台~~
2,然后载入网页.
3,再然后,去看Network信息…
4,亮点来了,点击Network信息的第一个玉米.
小人物 2011-10-22 20:07:27
光年论坛 http://www.gnbase.com/thread-8569-1.html

使用chrome浏览器自带的开发者工具查看http头的方法
1.在网页任意地方右击选择审查元素或者按下 shift+ctrl+c打开chrome自带的调试工具;
2.选择network标签,刷新网页(在打开调试工具的情况下刷新);
3.刷新后在左边找到该网页url,点击 后右边选择headers,就可以看到当前网页的http头了;
libi 于2012年05月11日 http://libisky.com/web/php/410.html

请求Header(HTTP request header )
Host 请求的域名
User-Agent 浏览器端浏览器型号和版本
Accept 可接受的内容类型
Accept-Language 语言
Accept-Encoding 可接受的压缩类型 gzip,deflate
Accept-Charset 可接受的内容编码 UTF-8,*

服务器端的响应Header(response header)
Date 服务器端时间
Server 服务器端的服务器软件 Apache/2.2.6
Etag 文件标识符
Content-Encoding传送启用了GZIP压缩 gzip
Content-Length 内容长度
Content-Type 内容类型
响应Headers,我们应该时刻留意它们。这些信息无法直接获取,需要依靠第三方工具。
阅微堂张志强 http://zhiqiang.org/blog/it/speedup-blog-http-headers.html

Chrome快捷键
Ctrl + Shift +B :打开书签管理器
Ctrl + Shift + T :恢复已关闭的标签页(最多恢复10项)
CTRL + D:当前页添加为书签
Ctrl + U:查看源文件

[多浏览器兼容]IE11中HTTP头Accept-Language的变化

将IE浏览器语言设置为中文,加载一个网页,查看浏览器发送的HTTP头中Accept-Language信息。

IE9


IE11

注意IE11将zh-CN改为了zh-Hans-CN。如果Server端没处理好,用IE11打开的网站可能无法正常显示中文。

解决方法,以C#为例,在Server端,在HTTP请求入口处(Global.asax.cs文件的Application_PreRequestHandlerExecute()函数中),直接改变HTTP头的Accept-Language内容:

if(Request.UserLanguages[i].ToString()=="zh-Hans-CN")
{
        Request.UserLanguages[i] = "zh-CN";
}

 

你可能感兴趣的:(ASP.NET)