什么是浏览器的同源策略

基本概念

协议、域名、端口相同视为同源

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=/

clipboard.png

域名

定义

网域名称(英语: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月,供美国教育机构/美国政府机关/美国军事机构。因历史遗留问题一般只在美国专用

参考资料


薛定谔的熵
59 声望4 粉丝

前端小菜鸟