Web开发中的跨域处理方案
什么是跨域
域(Domain)是网络中独立运行的单位,域之间相互访问则需要建立信任关系(Trust Relation)。信任关系是连接在域与域之间的桥梁。
跨域则是两个不同域的访问。
跨域情况
跨域分类:
- 不同协议的跨域
- 不同子域的跨域
- 不同主机的跨域
- 不同端口的跨域
举一个例子,Ajax的跨域请求访问:
// 跨域请求控制台错误信息
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
跨域产生的原因
浏览器的安全机制
- 安全方面考虑,浏览器不允许跨域调用页面信息。
- 安全限制的同时,也给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