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

戴化
2023-12-01

写在前面

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

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

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

 类似资料: