学习跨域相关知识
前言:同源策略
在讨论跨域之前,必须先了解一个概念–同源策略。
同源,顾名思义,就是要同一个"源"。
那么什么是源呢?
源是由协议、域名、端口号组成的,如果两个url的协议、域名、端口号三者完全一致,那么就可以说这两个url是同源的。
那么同源策略呢?
同源策略: 浏览器对不同源的脚本的访问方式进行限制,如果脚本运行在源A中,那么只能获取源A的数据,不能获得源B的数据。
简单来说,同源策略就是不同源之间的页面,不能互相访问数据。
同源策略是一种约定,它是浏览器最核心、最基本的安全功能。
一、什么是跨域
跨域是什么呢?跨域就是浏览器试图执行其他网站的脚本,但是因为浏览器受到同源策略的影响和限制,所以这个跨域是无法实现的。
跨域是浏览器对JavaScript的一种安全限制。
常见的跨域场景
http://www.learn.cn/index.html ->访问-> http://www.learn.cn/server.php 不是跨域
http://www.learn.cn/index.html ->访问-> http://www.test.cn/server.php 跨域,域名不一致
https://www.learn.cn/index.html ->访问-> http://www.learn.cn/server.php 跨域,协议不一致
http://www.learn.cn:8080/index.html ->访问-> http://www.learn.cn/server.php 跨域,端口号不一致
二、如何解决跨域
1.CORS(跨域资源共享)
???????CORS是一个W3C标准,全称"跨域资源共享(Cross-origin resource sharing)"。它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了Ajax只能使用同源的限制。
2.document.domain+iframe
?????????这种方式只能用于二级域名相同的情况,类似http://a.learn.com和http://b.learn.com就适用于这种方式,想要解决跨域,只要给页面添加document.domain='learn.com’表示二级域名都相同就可以实现跨域
3.jsonp
???JSONP全称为"JSON with Padding",可以解决主流浏览器跨域问题。Web页面上调用js文件不受浏览器同源策略的影响,所以通过Script标签便可以进行跨域的请求
…还有很多种方法
|