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跨域解决方案

如何设置IIS网站的端口号

ajax跨域问题解决办法

如何解决ajax跨域的问题

Javascript跨域和ajax跨域解决方案

加支付宝好友偷能量挖...


原创文章,转载请注明出处:FireFox下端口不一致导致跨域

评论(0)Web开发网
阅读(361)喜欢(0)JavaScript/Ajax开发技巧