浏览器同源策略

所谓的同源指的是三个相同,即协议相同域名相同端口相同。本文主要详细介绍下浏览器同源策略及规避方法。

在介绍同源策略之前,先介绍下浏览器 URL 的组成。以 http://www.example.com/dir/index.html?id=1234&name=abc#page 为例:

  • http::为协议部分,表示此网页使用的协议为 HTTP 。常见的协议有 FTPHTTPHTTPS 。协议后面的 '//' 为分隔符
  • www.example.com :为域名部分。此处也可使用 IP地址 作为域名使用
  • 端口部分:跟在域名后面的是端口,域名和端口之间使用 ':' 作为分隔符。如果端口省略,则为默认端口 80,非必须部分
  • dir:为虚拟目录部分,即从域名后的第一个 '/' 开始到最后一个 '/' 为止,是虚拟目录的部分。非必须部分
  • index.html:为文件名部分,即从域名最后一个 '/' 开始到 '?' 为止,如果没有 '?' ,则是从域名最后一个 '/' 开始到 # 为止,如果没有 '/''?' ,那么从域名最后一个 '/' 开始到结束都是文件名部分。此处为非必须部分,如果省略,则为默认文件名
  • id=1234&name=abc#:为参数部分,即从 '?' 开始到 '#' 为止,又称搜索部分、查询部分。可允许有多个参数,参数之间使用 '&' 作为分隔符
  • page:为锚部分,即从 '#' 开始到最后,都是锚的部分。非必须部分

针对域名部分,我还需要再多解释一下。在看一些文章的时候涉及到了一级域名和二级域名。这些概念含混不清。

域名 ( Domain Name ) ,简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称。*网域名称系统( DNS,Domain Name System,有时也简称为域名 ) 是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串。经常混淆的部分是一级域名又称定级域名和二级域名。

  • 顶级域名:顶级域(或顶级域名;英语:Top-level Domain;英文缩写:TLD)是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在example.com这个域名中,顶级域是.com(或.COM),大小写视为相同。
  • 二级域名:二级域(或二级域名;英语:Second-level domain;英文缩写:SLD)是互联网DNS等级之中,处于顶级域名之下的域。二级域名是域名的倒数第二个部分,例如在 example.com 这个域名中,二级域名是 example

以上,顶级域名主要有四个分类:

  • 国家及地区顶级域:如 .cn 代表中国,其他就不一一介绍了
  • 通用顶级域:如 .com.edu.gov.org.net
  • 基础建设顶级域
  • 测试顶级域

本文参考: