写在前面
首先感谢问题最终解决人:田志辉(音泰思公司【日本】)、白军(北京音泰思)
感谢常先魏(上海辛诺)、王铭孜(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 Settings
LoadModule 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
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 。