什么是浏览器的同源策略
基本概念
协议、域名、端口相同视为同源
以http://www.example.com/dir/page.html
为例子
- http(协议)
- www.example.com(域名)
- 80(默认端口)
非同源限制
- Cookie、LocalStorage 和 IndexDB 无法读取
- DOM 无法获得(获得的HTML都不同)
- AJAX 请求不能发送
cookie
Cookie(复数形态Cookies),中文名称为“小型文字档案”或“小甜饼”,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。是网景公司的前雇员卢·蒙特利在1993年3月的发明。
同源的网页才能共享。但是,两个网页一级域名相同,只是二级域名不同,浏览器允许通过设置document.domain共享 Cookie。
例:网页1是http://w1.example.com/1.html
,网页2是http://w2.example.com/2.html
,设置相同的document.domain,两个网页就可以共享Cookie。
document.domain = 'example.com';
服务器也可以在设置Cookie的时候,指定Cookie的所属域名为一级域名,比如.example.com。
这样的话,二级域名和三级域名不用做任何设置,都可以读取这个Cookie。
et-Cookie: key=value; domain=.example.com; path=/
域名
定义
网域名称(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
例子:www.ncic.ac.cn,每一级域名由英文半角句号分割。
- cn(顶级域名||一级域名)
- ac(二级域名)
- ncic(三级域名)
- www(www前缀表明此域名对应着万维网服务)
“ncic”作为三级域名是“ac.cn”的子域名。
常用顶级域名
- .com - 供商业机构使用,但无限制最常用,被大部分人熟悉和使用
- .net - 1985年1月,原供网络服务供应商使用,现无限制
- .org - 1985年1月,原供不属于其他通用顶级域类别的组织使用,现无限制
- .edu / .gov / .mil - 1985年1月,供美国教育机构/美国政府机关/美国军事机构。因历史遗留问题一般只在美国专用