HTTP权威指南之URL与资源
前言
web基础中介绍了URI、URL与URN;
URI是一类更通用的资源标识符,URL是它的一个子集;
URI是一个通用的概念,它主要由URL与URN组成;
URL是通过描述资源的位置来标识资源的,而URN则是通过名字来识别资源的,所以后续的HTTP文章中更多使用的是URL。
URL标准格式
例如:你想要获得URL https://www.baidu.com/index.html,那么URL分为以下三部分:
第一部分:方案,方案可以告知web客户端怎样访问资源,通过何种协议;URL并不只是仅使用HTTP协议,如FTP、rtsp、email等协议都是可以的。
第二部分:地址,服务器的地址,可以是域名也可以是IP地址
第三部分:资源路径,路径说明了请求的是服务器上面的那部分资源
URL完整格式
上面讲述一个URL的标准格式,大部分的URL用上述的格式即可,还有一些特殊的内容可以用到,下面列出URL的完整格式,完整格式包含URL中所有需要的内容,并对这些内容进行详解
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
组 件 | 描 述 | 默 认 值 |
<scheme> | 方案;访问服务器以获取资源时要使用哪种协议 | 无 |
<user> | 用户名;某些方案访问资源时需要的用户名 | anonymous |
<password> | 密码;用户名后面可能要包含的密码,中间由冒号(:)分隔 | E-mail地址 |
<host> | 主机地址;资源宿主服务器的主机名或点分 IP 地址 | 无 |
<port> | 端口;资源宿主服务器正在监听的端口号。很多方案都有默认端口号(HTTP 的默认端口号为 80) | 每个方案特有 |
<path> | 路径;服务器上资源的本地名,由一个斜杠(/)将其与前面的 URL 组件分隔开来。路径组件的语法是与服务器和方案有关的(本章稍后会讲到 URL 路径可以分为若干个段,每段都可以有其特有的组件。) | 无 |
<params> | 参数;某些方案会用这个组件来指定输入参数。参数为名 / 值对。 URL 中可以包含多个参数字段,它们相互之间以及与路径的其余部分之间用分号(;)分隔 | 无 |
<query> | 查询;某些方案会用这个组件传递参数以激活应用程序(比如数据库、公告板、搜索引擎以及其他因特网网关)。查询组件的内容没有通用格式。用字符“?”将其与 URL 的其余部分分隔开来 | 无 |
<frag> | 片段;一小片或一部分资源的名字。引用对象时,不会将 frag 字段传送给服务器;这个字段是在客户端内部使用的。通过字符“#”将其与 URL 的其余部分分隔开来 | 无 |
实例
# 方案;需注意,协议是不区分大小写的
http://www.baidu.com
HTTP://www.baidu.com # 主机与端口;主机指向服务器,端口指向服务
http://www.baidu.com:80 # 用户名与密码;
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
http://joe:joespasswd@www.joes-hardware.com/sales_info.txt # 路径
http://www.baidu.com/Images/index.html # 参数;这个例子有两个路径段,hammers和index.html。hammers路径段参数有sale,其值为false;index.html段有参数graphics,其值为true。
http://www.baidu.com/hammers;sale=false/index.html;graphics=true # 查询字符串;查看编号为12731的字段内容是否存在
http://www.baidu.com/inventory-check.cgi?item=12731 # 片段;片段组件用来表示一个资源内部的片段,比如URL指向HTML文档中一个特定的图片或者小节
http://www.baidu.com/tools.html#drills
URL快捷方式
绝对URL:URL中包含访问资源所需的全部信息;如:http://www.163.com/new.html
基础URL:针对同一个网站来讲,其相同的url部分,如:http://www.163.com
相对URL:去除基础URL,剩余的URL就是相对URL;如:/new.html,完整显示为http://www.163.com/new.html。相对URL只是URL的片段或一小部分,处理url的应用程序要能在相对和绝对URL之间进行转换。
实现相对url转换为绝对url的第一步就是找到基础url,怎么找基础url?
答:
- 在资源中显式提供,有些资源会显式的提供基础url。如:html文档中可能会包含了一个定义基础url的html标记<BASE>,通过它来转换那个html文档中的所有相对url
- 封装资源的基础url,如没显式的找到基础url,可以将其所属资源的url作为基础url。简单理解就是:将该相对url超链接所在页面绝对url中的基础url作为其基础url。
- 没有基础url:只有相对url,但有时可能只是一个不完整的或损坏了的url
解析相对引用图
自动扩展URL
自动扩展:很多浏览器会在用户提交URL/输入URL时尝试自动扩展URL,这样为用户提供便捷,用户不需要输入完整的URL,浏览器自动扩展
自动扩展特URL特性
主机名扩展:只要有些小提示,浏览器就可以帮你将输入的主机名扩展为完整的主机名,比如:输入baidu,构建出www.baidu.com;弊端在于有时候会为其他http应用程序带来问题,比如代理,后面详细解释
历史扩展:将以前用户访问过的URL记录储存起来,当用户输入URL时将其与历史记录中的URL前缀进行匹配,并提供一些完整的选项供用户选择
字符
ASCII
,中文是不支持的(当然,不止是中文这么简单,ASCII无法表示所有字符这才是硬伤)。为了使用ASCII,又要支持其他字符,所以,编码
就来了。其实这种编码
就是转义
,使用A代表B(比如URL中包含的类似%7E
符号,就是转义之后的,代表着~
这个特殊符号)。另外,还有一些特殊的保留字符(就像C语言中的关键字一样),若在保留场合之外使用需要编码。下面列举了这些字符:方案详解
HTTP权威指南之URL与资源的更多相关文章
- HTTP权威指南笔记-2.URL与资源
2.1 URI与URL.URN URL是浏览器寻找信息时所需的具体位置.URl是人们对HTTP和其他协议的常用访问点:浏览器指向一个URL,浏览器就会发送适当的协议报文向服务器获取内容. URI是一类 ...
- 《HTTP权威指南》学习笔记——URL和资源
URL与资源 URL是互联网资源的标准化名称 1.浏览互联网资源 URL是浏览器寻找信息时所需的资源位置 URI是一类更通用的资源标识符,URL是它的子集. URI的两个子集:URL和URN URL提 ...
- HTTP权威指南读书笔记(一)HTTP概述、URL和资源及报文详解
一.HTTP概述 1.WEB客户端和服务器. 2.资源:资源可以是各种格式的静态文件,也可以是应用程序. 3.媒体类型 4.URI:统一资源标识符 URL:统一资源定位符. URL的第一部分称为方案: ...
- HTTP权威指南-URL与资源
URL与资源 URL是URI的子集 方案(http),主机(www.baidu.com),路径(/home/logo.png) 方案,其实有很多,HTTP.HTTPS.FTP,SMTP等等. http ...
- Hadoop权威指南:从Hadoop URL读取数据
[TOC] Hadoop权威指南:从Hadoop URL读取数据 使用java.net.URL对象从Hadoop文件系统读取文件 实现类似linux中cat命令的程序 文件名 HDFSCat.java ...
- WebRTC 学习资源 电子书 WebRTC权威指南 Learning WebRTC
webRTC源码下载地址:https://pan.baidu.com/s/18CjClvAuz3B9oF33ngbJIw 提取码:wl1e 1.<WebRTC权威指南>第三版 中文版 本书 ...
- Http权威指南笔记(一) URI URL URN 关系
定义 URI:统一资源标识符(Uniform Resource Indentifier)用来标识服务器上的资源. URL:统一资源定位符(Uniform Resouce Locator)是资源标识符最 ...
- Android开发权威指南(第2版)新书发布
<Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...
- URL与资源
资源推荐 1.HTTP权威指南. <HTTP权威指南>由古尔利所著,<HTTP权威指南>详细解释了HTTP协议,包括HTTP是如何工作的,如何用HTTP来开发基于Web的应用程 ...
随机推荐
- etcd配置文件详解
一 示例yml配置文件 # This is the configuration file for the etcd server. # Human-readable name for this mem ...
- TCP/IP||ICMP
1.概述 ICMP为IP组成部分之一,传递差错报文并返回用户进程,在IP数据报内部被传输 类型字段可以有15个不同的值,以描述特定类型的ICMP报文,检验和字段覆盖整个ICMP报文. 2.报文类型 在 ...
- no supported authentication methods avaiable
在git(小乌龟)向github远程推送(push)文件是会报一个异常 no supported authentication methods avaiable 解决方法:因为git(小乌龟)和Git ...
- 20191031-4 beta week 1/2 Scrum立会报告+燃尽图 02
此作业要求参见 https://edu.cnblogs.com/campus/nenu/2019fall/homework/9912 git地址:https://e.coding.net/Eustia ...
- [gitHub实践] 实践记录
[gitHub实践] 实践记录 版权2019.4.19更新 Q1:本地仓库和远程仓库连接提示输入用户名密码 本地仓库和远程仓库连接有两种方式 本地初始化建立一个仓库,远程也建立了一个仓库 本地建立仓库 ...
- HDU3886 Final Kichiku “Lanlanshu” 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3886 题目大意: 给一定区间 \([A,B]\) ,一串由 /, \ , - 组成的符号串.求满足符号 ...
- Mysql备份与恢复(2)---逻辑备份
数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小.上一篇针对使用xtrabackup工具进行物理备份和数据恢复做了一个详细讲解,本篇 ...
- Ant Design Pro项目打开页设为登录或者其他页面
Ant Design Pro项目打开页设为登录或者其他页面 一.打开页设为登录页 首先找到utils包中的authority文件,在该文件中找到如下代码: export function getAut ...
- html 小游戏合集(1.0)
最近做了个小游戏合集,有点沙雕,毕竟是1.0,将就看看. <!DOCTYPE html> <html> <head> <meta charset=" ...
- Tasker如何使用Tasker插件以及Tasker第三方应用
很多人不清楚Tasker插件和Tasker第三方应用之间的区别,以及与Tasker的关系有何不同,其实对于使用者而言并不需要理解他们之间的区别,因为这两者在使用上的区别逐渐模糊而变得没有区别,不过本人 ...