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的应用程 ...
随机推荐
- JVM 体系结构与工作方式
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- TCP/IP||ICMP
1.概述 ICMP为IP组成部分之一,传递差错报文并返回用户进程,在IP数据报内部被传输 类型字段可以有15个不同的值,以描述特定类型的ICMP报文,检验和字段覆盖整个ICMP报文. 2.报文类型 在 ...
- Spring Security入门(基于SSM环境配置)
一.前期准备 配置SSM环境 二.不使用数据库进行权限控制 配置好SSM环境以后,配置SpringSecurity环境 添加security依赖 <dependency> <gr ...
- MyBatis原理-延迟加载,一级缓存,二级缓存设置
一.延迟加载 resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息. ...
- js中this指向问题(call,apply,bind)
call.apply.bind的作用是改变函数运行时this的指向. 如果你传的 context 就 null 或者 undefined,那么 window 对象就是默认的 context(严格模式下 ...
- 兄弟们,你们天天吊打面试官,面试官很难受啊。 metasploit免S客户端
metasploit生成的exe文件很小,但是免杀效果不行, 找了很多资料, 只有生成c语言shellcode,然后c#重新编译, 这种免杀效果,挺让人满意的 首先需要生成客户端,客户端使用了ngro ...
- ssh免密登陆和加密解密
一 丶实现无密码的远程管理 1.生成公钥 私钥 [root@room9pc14 桌面]# ssh-keygen [root@room9pc14 桌面]# ls /root/.ssh/ 2.上传公钥到虚 ...
- [技术翻译]Web网页内容是如何影响电池使用寿命的?
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...
- SpringBoot2 整合 Zookeeper组件,管理架构中服务协调
本文源码:GitHub·点这里 || GitEE·点这里 一.Zookeeper基础简介 1.概念简介 Zookeeper是一个Apache开源的分布式的应用,为系统架构提供协调服务.从设计模式角度来 ...
- 2013 ACM/ICPC Asia Regional Online —— Warmup2 ABEGKL
HDU4716 A. A Computer Graphics Problem A题目描述 题意:输出手机剩余电量,保证给出的数是10的倍数. 题解:水题,按题意输出即可. 代码: #include & ...