该问题会出现IE :对象不支持 selectNodes 属性或方法 的提示,实际为接收数据问题
老项目一直使用IE8进行开发适配,由于嵌入到其他系统,存在IE版本不同的问题,导致IE出现异常,页面无法加载
经排查为 XMLHttpRequest 在接收xml行数据时出现截取问题
IE8与谷歌中使用源代码,可正常显示
var objXMLHTTP;
if (window.ActiveXObject) {
objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
objXMLHTTP = new XMLHttpRequest();
}
}
objXMLHTTP.open("POST", url, false);
objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
objXMLHTTP.setRequestHeader("RequestType", "ajax");
objXMLHTTP.send(param);
if (200 == objXMLHTTP.status) {
return objXMLHTTP.responseXML;
} else {
return null;
}
但使用iE11时出现问题,通过网络面板查看接收到的数据截取了.4k 数据,逐个排查后,发现responseXML数据被截取,但responseText 正常接收到完整数据,继而对应源码,进行修改
var objXMLHTTP;
if (window.ActiveXObject) {
objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
objXMLHTTP = new XMLHttpRequest();
}
}
objXMLHTTP.open("POST", url, false);
objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
objXMLHTTP.setRequestHeader("RequestType", "ajax");
objXMLHTTP.send(param);
if (200 == objXMLHTTP.status) {
if(document.documentMode !=undefined && document.documentMode !=8 ){
return loadXMLDOMByText(objXMLHTTP.responseText);
}
return objXMLHTTP.responseXML;
} else {
return null;
}
function loadXMLDOMByText(xmlText){
var xmlDOM =null;
try //Internet Explorer
{
xmlDOM=new ActiveXObject("Microsoft.XMLDOM");
xmlDOM.async = false;
xmlDOM.loadXML(xmlText);
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xmlDOM=document.implementation.createDocument("","",null);
var parser=new DOMParser();
xmlDOM=parser.parseFromString(xmlText,"text/xml");
}
catch(e) { //alert(e.message)
}
}
return xmlDOM;
}
跨域问题:
1.jsp 页面设置头 response.addHeader("P3P","CP=CAO PSA OUR");
2.使用nginx 配置反向代理
nginx配置文件没有做带端口走 ,加入第四句代码即可 https://blog.csdn.net/chilai2005/article/details/100644345
-
location / {
-
proxy_pass http://127.0.0.1:8080;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header Host $host:83; # 端口跟着走
-
}