所谓的同源
指的是三个相同
,即协议相同
、域名相同
、端口相同
。本文主要详细介绍下浏览器同源策略及规避方法。
在介绍同源策略之前,先介绍下浏览器 URL
的组成。以 http://www.example.com/dir/index.html?id=1234&name=abc#page
为例:
http:
:为协议部分,表示此网页使用的协议为HTTP
。常见的协议有FTP
、HTTP
、HTTPS
。协议后面的'//'
为分隔符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
等 - 基础建设顶级域
- 测试顶级域
本文参考: