同源策略和跨域解决

2020-04-30  本文已影响0人  caoxingyu

同源策略

1、定义

所谓"同源"指的是"三个相同"

2、目的

  同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。
  设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie,会发生什么?
  很显然,如果 Cookie 包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。
  由此可见,"同源政策"是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了。

3、限制范围

随着互联网的发展,"同源政策"越来越严格。目前,如果非同源,共有三种行为受到限制。

  1. Cookie、LocalStorage 和 IndexDB 无法读取。
  2. DOM 无法获得。
  3. AJAX 请求不能发送。

下面重点介绍解决AJAX 请求不能发送的方法

  1. 服务器代理(浏览器请求同源服务器,再由后者请求外部服务,比如常用的nginx代理)
  2. JSONP
      JSONP是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小。
      它的原理是html中的src和href属性不受同源策略限制。它的基本思想是,网页通过添加一个<;script>元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。JSONP只能发GET请求。
  3. cors
    CORS是跨域资源分享(Cross-Origin Resource Sharing)的缩写。它是W3C标准,是跨域AJAX请求的根本解决方法。相比JSONP只能发GET请求,CORS允许任何类型的请求。
    详情参考阮一峰的博客
上一篇下一篇

猜你喜欢

热点阅读