FireFox下端口不一致导致跨域
在Firefox下,如果url路径带有端口号,而ajax对象访问的路径为绝对路径并且端口号不一样时,会出现
uncaught exception: (1? XMLHttpRequest.open ?CP 3
的错误,这个是因为端口号不一致时导致出现的跨域错误。而IE下不会因为请求的端口号不一致出现跨域的问题。
其实出现端口号不一致的错误实在是微乎其微,有谁会一个网站开放两个端口号,浏览器访问时使用一个,ajax对象请求又使用另一个呢??这不是找罪受吗,还得处理跨域的问题。
当ajax出现端口跨域的问题时,Firefox下哪怕设置了document.domain也解决不了跨域的问题,要想Firefox下不出现端口跨域问题,可以使用下面两种比较简单的办法
1)ajax只能使用相同的端口号
2)使用相对路径,而不是使用绝对路径
可以保存下面的代码,自己测试下即可
x.html
+展开
-JavaScript
document.domain="192.168.1.68";//设置domain在Firefox下也解决不了端口跨域 var xhr=window.ActiveXObject?new ActiveXObject("microsoft.xmlhttp"):new XMLHttpRequest(); //=====================================
//相对路径,不出现跨域问题 xhr.open("get","x.html?_dc="+new Date().getTime(),true);
//端口不一致,Firefox下跨域出错
//xhr.open("get","http://192.168.1.68:7070/x.html?_dc="+new Date().getTime(),true);
//端口一致,不出现跨域问题 //xhr.open("get","http://192.168.1.68:8080/x.html?_dc="+new Date().getTime(),true);
//===================================== xhr.onreadystatechange=function(){if(xhr.readyState==4)alert(xhr.responseText);} xhr.send(null);
建立一个网站,打开8080端口和7070端口,浏览器通过8080端口访问http://192.168.1.68:8080/x.html页面,修改//=====================================中的代码,刷新查看效果。
相关ajax跨域解决方案
加支付宝好友偷能量挖...
原创文章,转载请注明出处:FireFox下端口不一致导致跨域