URL基本结构

先来简单说下URI、URL、URN这三个鬼东西。

URI全称Uniform Resource Identifier,统一资源标识符

URL全称Uniform Resource Locator,统一资源定位符

URN全称Uniform Resource Name,统一资源名称


URI(统一资源标识符)有以下两种形式

URL是一个用于标识某一互联网资源名称的字符串

URN是URL的一种更新形式,统一资源名称不依赖于位置,并且有可能减少失效连接的个数。

大白话就是URL和URN都是URI的子集,其中URI是URL的另一种更新形式而已

下面来说下URL的组成

举个栗子,比如https://www.baidu.com:80/item/url/110640?fr=aladdin这个地址

URL由下面几个部分组成

第一部分-协议(scheme)

该URL的协议部分是https(超文本传输协议),https表示用安全套接字层传送的超文本传输协议,它是一种加密的HTTP传输协议,比HTTP更安全

常用的协议有http、https、ftp、file、mailto

第二部分-域名

一个URL中也可以使用IP地址作为域名使用

域名分为顶级域名www.baidu.com、二级域名baike.baidu.com、三级域名baike.tieba.baidu.com

第三部分-端口

用来区分同一台服务器上不同服务的标识

HTTP默认端口为80,端口范围是0-65535之间

HTTPS默认端口号443,FTP默认端口号21

跟在域名后面的是端口,域名和端口之间用 ":" 作为分隔符。另外端口不是URL必须的部分,如果省略端口将采用默认端口

第四部分-虚拟目录(路径)

从域名后的第一个"/"开始到最后的/为止为虚拟目录。虚拟目录也不是URL必须部分

这里的/斜杠可能是目录也可能是接口

第五部分-文件名(?查询信息)

域名最后一个斜杠 / 到?部分,如果没有?则是从域名后的最后一个 / 到 #

其中?代表查询信息,window.location.search方法可以获取到,该方法可以读也可以写,写了查询信息会刷新页面

第六部分-锚信息(#哈希)

#号之后的都是锚信息 hash值。window.location.hash方法可以获取到,该方法也是可读可写,写了锚信息不会刷新页面

其中window.onhashchange方法当hash值发生变化时候才会触发该方法

原文地址:https://www.cnblogs.com/theblogs/p/10088749.html