非同源资源访问,通常会遇到下列问题。
一、cookie,localstorage,indexDB无法获取二、DOM无法获取三、如何成功发送ajax请求针对上述3点问题,下面提供解决方案。
一、两网页共享cookie跨子域:二、文档请求不同源1、
优点:支持跨主域。缺点:不支持POST。2、优点:支持双向通信。缺点:仅限于HTML5。3、
跨主域:iframe + location.hash优点:- 可以解决域名完全不同的跨域;
- 可以实现双向通讯。
缺点:
- location.hash会直接暴露在URL里,并且在一些浏览器里会产生历史记录,数据安全性不高也影响用户体验;
- 由于URL大小的限制,支持传递的数据量不大;
- 有些浏览器不支持onhashchange事件,需要轮询来获知URL的变化。
4、(需要服务器配合)
优点:支持强大,相对简单。缺点:依赖flash,需要在服务器根目录放置crossdomain.xml文件。三、ajax请求不同源1、(需要服务器配合)优点:- 它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;
- 它的兼容性更好,在古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;
- 在请求完毕后可以通过调用callback的方式回传结果。
缺点:
- 它只支持GET请求而不支持POST等其它类型的HTTP请求;
- 它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。
2、(需要服务器配合)
优点:CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案。缺点:老浏览器不支持CORS。3、(需要服务器配合)优点:缺点:4、(需要服务器配合)优点:缺点:5、(需要服务器配合)优点:缺点: