使用过的跨域方式,各自的优缺点

跨域问题产生的原因

同源策略:端口相同、域名相同、协议相同

  • 同源策略是浏览器所做的,目的是为了保证用户信息的安全,防止恶意的网站窃取数据。
  • 同源策略限制范围:
    1. Cookie、LocalStorage、IndexDB无法读取;
    2. DOM 无法获取;
    3. AJAX 请求不能发送

解决方法

CORS(cross-origin resource sharing)跨域资源请求:浏览器发送一个跨域的 ajax 请求的时候,请求头会加上 origin 字段,但是它不知道这个资源服务端是否允许跨域请求。浏览器会发送到服务端,如果服务器返回的头中没有‘Access-Control-Allow-Origin’:‘对应网址或*’的话,那么浏览器会把请求内容给忽略掉,并且会在控制台报错。

CORS 允许简单的请求方法:GET、POST、HEAD
CORS 允许的 Content-Type : text/plain、multipart/form-data、 application/x-www-form-ulencoded
其他类型的请求方法和 Content-Type 需要通过预请求验证 OPTIONS 后才能发送

JSONP 跨域

原理

浏览器虽然有同源限制,但是像 script 标签、link 标签、img 标签、 iframe 标签,这种标签上通过src 地址来加载一些内容的时候浏览器是允许进行跨域请求的。

各种跨域方式的优缺点

JSONP 的优点是兼容性好,可用于解决主流浏览器跨域数据访问的问题;缺点是仅支持 get 方法,只能用来获取资源,并且无法进行错误处理。
CORS 优点是支持所有类型的请求方法,功能完善,并且可以进行错误处理,用 onerror 监听错误, CORS 更加安全;缺点兼容性不够好,IE10 以下不支持 CORS。

发表评论 / Comment

用心评论~