什么是跨域?如何解决跨域问题


一、什么是跨域?

  指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对 javascript 施加的安全限制。

  同源策略:是指协议(protocol)、域名(host)、端口号(port),都必须相同,其中一个不同都会产生跨域。

  http://www.test.com:8000/  协议(http)、主域名(test)、子域名(www)、端口号(8000)

二、非同源限制

  无法读取非同源网页的cookie、localStorage、IndexedDB

  无法接触非同源网页的DOM

  无法向非同源地址发送 AJAX 请求

三、解决跨域的方法

  1.JSONP

    原理是:

      有些标签 script、img、link、iframe ... 这些标签不存在跨域请求的限制,就是利用这个特点解决跨域问题。

      JSONP 是服务器与客户端跨源通信的常用方法。

    优点:简单适用,兼容性好(可以兼容低版本IE),

    缺点:只支持 get 请求,不支持 post 请求,导致数据不安全

    核心思想:网页通过添加一个