同源策略
浏览器故意设计的一个功能限制,即不同源的页面之间的数据是不能互相访问的。
同源
源:协议、域名、端口。
如果协议、域名、端口、完全一致就是同源。
window.origin 或者 location.origin 可以得到源;
跨域
浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。也就是说从一个域名的网页去请求另一个域名的资源时,它们不是同一个源,都是跨域。
跨域方法
突破浏览器限制,为了是一些不同源页面能够互相访问,跨域的方式有CORS 跨域 ,JSONP 跨域。
CORS
CORS(Cross-Origin Resource Sharing)跨域资源共享是突破浏览器限制的一个方法。
在后台设置 response.setHeader(‘Access-Control-Allow-Origion’,’设置可以访问该网站的数据的网站’)
IE6789不兼容CORS,但是JSONP可以。
JSONP
JSONP:兼容IE,由于当前浏览器不支持CORS或者因为某些条件不支持CORS,我们必须使用另外一种方式来跨域,我们请求一个js文件,这个会执行一个回调,回调里面就有我们的数据。
优点:
-
兼容IE
-
可跨域
缺点:
-
由于是script标签,不知道状态码和响应头,只知道成功与失败。
-
由于是script标签,只能发get请求,不支持post。