标签:
最近工作中的项目需要通过浏览器ajax请求访问本地的一个http服务,不可避免遇到了跨域的问题,还要兼容IE,踩了不少坑,在这里作一个总结吧
跨域问题是由于浏览器的同源策略所引起的,浏览器同源策略在web应用中非常重要,没有它web的世界会一团糟
URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。
比较容易忽略的一点就是协议不同也会引发同源策略,http和https是不同源的
浏览器的同源策略就是,从一个源上加载的脚本不允许访问不同源的文档,这个有点抽象,具体体现在下面两个方面
我们知道通过标签加载资源是不会受到限制的,比如<script>加载cdn加速的js资源,<img>加载不同域的图片等,<iframe>加载其他域的html。
似乎浏览器对于标签加载资源没有作同源策略。实际上标签的同源策略体现在浏览器限制了JavaScript的权限使其不能读、写加载的html文档。
注意仅仅指的是html文档,具体而言指的是iframe加载的html文档,js无法访问其document。 而js,img等仍然认为是同源,不受访问限制。
浏览器发出的xmlhttprequest也存在同源的问题,不同源的访问会被限制,接下来将介绍这部分内容
同源策略是web安全上的考虑,但是实际的工作中经常会碰到需要跨域的情况。主流的跨域方式有
1.html5 postMessage方式
2.window.name
标签:
原文地址:http://www.cnblogs.com/luowenxing/p/4648996.html