跨域 CORS JSONP

142 阅读1分钟

同源策略

浏览器故意设计的一个功能限制,即不同源的页面之间的数据是不能互相访问的。

同源

源:协议、域名、端口。

如果协议、域名、端口、完全一致就是同源。

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。