什么是同源
同源策略
- 浏览器故意规定:如果一个JS文件运行在源A里,那么就只能获取到源A的数据。不能获取到其他源的数据,即不允许跨域
- 不同源的页面之间不允许互相访问数据
- 目的:保护用户隐私
什么是跨域
一般来说,当一个请求url的协议、域名、端口三者之间任意一个与当前页面地址不同即为跨域。最常见的就是在一个域名下的网页中,调用另一个域名中的资源。
JSONP 跨域
我们在跨域的时候,由于当前浏览器不支持CROS,或者因为某些原因不支持CROS,那我们就必须用
JSONP来跨域。于是请求一个JS文件,这个JS文件会执行一个回调,回调里面就有我们的数据。我们当前网站创建一个script标签去请求另外一个网站的JS,JS里面会夹带我要的数据,而且这个JS会调用我写的一个全局函数来运行,就可以把数据给我了.这个回调的名字是我们随机生成的随机数,我们把这个回调的名字以callback的参数传给后台,后台就会把这个函数返回给我们,再执行
优点:
缺点:
CORS 跨域
CORS,全称Cross-Origin Resource Sharing ,是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。
详细做法:
Access-Control-Allow-Origin: MDN文档