码迷,mamicode.com
首页 > 其他好文 > 详细

同源策略

时间:2020-09-18 00:33:16      阅读:30      评论:0      收藏:0      [点我收藏+]

标签:注意   数据存储   cal   信息   源地址   端口   相同   lazy   height   

同源策略含义:

同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。所谓“同源”指的是“三个相同”:协议,域名,端口(这点可以忽略)

注意,标准规定端口不同的网址不是同源(比如8000端口和8001端口不是同源),但是浏览器没有遵守这条规定。实际上,同一个网域的不同端口,是可以互相读取 Cookie 的。

同源策略目的:

为了保证用户信息的安全,防止恶意的网站窃取数据。

设想这样一种情况:A 网站是一家银行,用户登录以后,A 网站在用户的机器上设置了一个 Cookie,包含了一些隐私信息。用户离开 A 网站以后,又去访问 B 网站,如果没有同源限制,B 网站可以读取 A 网站的 Cookie,那么隐私就泄漏了。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。

由此可见,同源政策是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了。

如果是非同源,限制范围:

(1) 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB(补充:IndexedDB提供了类似数据库风格的数据存储和使用方式,IndexedDB很适合存储大量数据,它的API是异步调用的。IndexedDB使用索引存储数据)

(2) 无法接触非同源网页的 DOM。

(3) 向非同源地址发送 AJAX 请求浏览器会拒绝响应。

 不同源如何拿到Cookie?

Cookie 是服务器写入浏览器的一小段信息,只有同源的网页才能共享。如果两个网页一级域名相同,只是次级域名不同,浏览器允许通过设置document.domain共享 Cookie。

 技术图片

注意,这种方法只适用于 Cookie 和 iframe 窗口

 不同源怎么发送AJAX请求?

同源政策规定,AJAX 请求只能发给同源的网址,否则就报错。

除了架设服务器代理(浏览器请求同源服务器,再由后者请求外部服务),有三种方法规避这个限制:JSONP,WebSocket , CORS

技术图片

 

同源策略

标签:注意   数据存储   cal   信息   源地址   端口   相同   lazy   height   

原文地址:https://www.cnblogs.com/dfzj/p/13663301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!