Web开发中的跨域处理方案

什么是跨域

域(Domain)是网络中独立运行的单位,域之间相互访问则需要建立信任关系(Trust Relation)。信任关系是连接在域与域之间的桥梁。

跨域则是两个不同域的访问。

跨域访问的情况

跨域情况

跨域分类:

  • 不同协议的跨域
  • 不同子域的跨域
  • 不同主机的跨域
  • 不同端口的跨域

举一个例子,Ajax的跨域请求访问:

http://counter.sina.com.cn/ip

// 跨域请求控制台错误信息
XMLHttpRequest cannot load http://counter.sina.com.cn/ip.No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:2880' is therefore not allowed access

ajax跨域请求

跨域产生的原因

浏览器的安全机制

  • 安全方面考虑,浏览器不允许跨域调用页面信息。
  • 安全限制的同时,也给iframe和ajax操作带来了很多麻烦,那就是跨域问题。

跨域的危害

通过跨域操作可以实现Cookie劫持

<a href="">IE6 Cross Domain Scripting</a>
<script>
function win(){
    x = window.open("http://www.phpwind.net");
    setTimeout(function(){
        x.location= “javascript:alert(document.cookie)”;
    },3000)
}
window.onload=function(){
    for (i=0;i<document.links.length;i++) { 
        document.links[i].href="javascript:win()"
    }
}
</script>

跨域的解决方案

  • HTTP协议头处理
  • 代理请求
  • JSONP
来源: 雨林博客(www.yl-blog.com)