最近开发一个网站用到单点登录,浏览器兼容问题永远是前段开发的难题,在firefox下编写完成的代码在chrome下无论如何就是不行,在登陆后,单点登录验证时从服务器端得到的是xml文件或xml字符串,但是chrome下就是不能解析xml文件获取其中的用户名等信息,调试了几天,终于发现时符号引起的问题,太蛋疼了。
因为兼容性问题,在firefox或者chrome等浏览器下,我用XMLHttpRequest来解析xml文件,但是chrome下XMLHttpRequest解析xml时会因冒号而解析不到xml的细节内容,比如从服务器端得到的xml文件内容如下:
<?xml version='1.0' encoding='UTF-8'?>
<sso:serviceResponse xmlns:sso="sso-namespace">
<sso:authenticationSuccess>
<sso:user>2011200837</sso:user>
<sso:attributes>
<sso:attribute name="uid" type="String" value="2011200837"/>
<sso:attribute name="isactived" type="String" value="1"/>
<sso:attribute name="vdate" type="String" value="2200-01-01"/>
<sso:attribute name="userName" type="String" value="2011200837"/>
<sso:attribute name="cn" type="String" value="##"/>
<sso:attribute name="sn" type="String" value="##"/>
</sso:attributes>
</sso:authenticationSuccess>
</sso:serviceResponse>
chrome下用XMLHttpRequest来解析上述xml时会因冒号(:)而解析不到内容,不知道是不是chrome内部机制的原因,没有细研究。
解决方法很简单,在解析xml文件之前把冒号替换掉就可以了。