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

来源:互联网 发布:exm网络用语什么意思 编辑:程序博客网 时间:2024/05/29 10:49

写在前面

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

感谢常先魏(上海辛诺)、王铭孜(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:

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">    <SOAP:Body>     <Generate xmlns="http://schemas.cordys.com/1.0/xform">        <hostname>10.64.50.153</hostname>        <parameters>organization=o=HLJ,cn=cordys,cn=defaultInst,o=hlcuc.com</parameters>        <organization>o=HLJ,cn=cordys,cn=defaultInst,o=hlcuc.com</organization>        <baseurl>http://10.64.50.153:80/home/HLJ/</baseurl>        <isIE6>false</isIE6>        <preview>false</preview>        <key lastModified="">/com/cordys/cusp/cusp.caf</key>        <language>zh-Hans-CN</language>     </Generate>   </SOAP:Body> </SOAP:Envelope>

注意IE11将zh-CN改为了zh-Hans-CN。

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

[root@VMXPNSAPP ~]# vi /opt/Cordys/defaultInst/components/webgateway/Apache/cordys_apache.conf
# Cordys Apache 2.0 Configuration SettingsLoadModule deflate_module modules/mod_deflate.so......<LocationMatch ^/(cordys|home)>   Header set X-UA-Compatible "IE=EmulateIE8,IE=EmulateIE10"   RequestHeader set Accept-Language "zh-CN,zh;q=0.8"</LocationMatch>

[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 。

1 0
原创粉丝点击