URL是因特网资源的标准化名称,该字符串指向一条电子信息片段,定义服务端应用程序在什么位置以及客户端要如何与其交互

一条完整的URL由多个片段组成。

通用URL组件

方案 以哪种协议访问服务器
用户 某些方案访问资源时需要用户名
密码 用户名之后可能需要密码
主机 资源宿主服务器的主机名或IP地址
端口 资源宿主服务器正在监听的端口号
路径 服务器上资源的本地名,由一个斜杠(/)将其与前面的URL组件分开。路径组件的语法是服务器和方案有关
参数 某些方案会用参数组件来指定输入参数。参数由名/值对组成且可以有一个或多个(多个参数用;分开)
查询 用字符?将其与其他组件分开。某些方案用于这个组件传递参数以激活应用程序,比如查询数据库
片段 一小片或一部分资源的名字。引用对象时,不会将frag字段传递给服务器,这个字段是在客户端内部使用的,通过#与其他组件分开

相对URL

  URL有两种,一种是刚才见到的绝对URL(包含访问资源所需的全部信息),另外一种是相对URL。

  相对URL对绝对URL来讲是不完整的字符串。要想从相对URL中获取访问资源的全部信息,就必须相对于另一个被称为基础的URL进行解析。

  

转换处理的第一步就是找到基础的URL,基础URL是作为相对URL的参考点使用的,可以来自以下几个地方。

  1:在资源中查询:有些资源会显式的指定基础URL,比如在HTML里定义<base>标签

  2:封装资源的基础URL:如果在没有显式指定基础URL的资源中发现了一个相对URL,可以将他所属资源的URL作为基础。

  3:没有基础URL:某些情况下,没有基础URL,这通常意味着你又一个绝对URL;但也有可能只是一个损坏了的不完整的URL。

解析相对引用

  了解了URL的组件和语法之后,就可以使用以下方案算法将相对URL转换成绝对URL

  

    

字符集和编码

  由于URL需要统一命名因特网上的所有资源,也就意味着要通过不同的协议来传送这些资源。这些协议在传送资源时使用了不同的机制。不同的机制会有不同的保留字符作为关键字。所以URL在作为资源传送的纽带,只能使用一些相对较小、通用的安全字符组成能够各种协议所能识别的URL,URL不仅能被所有传输协议所使用外,还希望URL是人类可阅读的。因此,即使不可见,不可打印的字符能够程序传送,也不能在URL中使用。另外URL还必须是完整的。URL不仅使用通用的安全字符组成URL表达式,还会使用二进制数据或者字符。因此需要使用一种转义机制。能够将不安全的字符编码为安全字符,再进行传输。

  总结:URL的组成需要满足三个条件

      一:具有通用,能被各种协议使用

      二:具有可读性

      三:安全性,字符编码

字符集

  URL默认使用US-ASCII作为字符集。US-ASCII使用7位二进制码来表示英文打字机提供的大多数按键和少数用于文本格式和硬件通知的不可打印控制字符

字符编制

  通过使用“转义”表示法来表示不安全字符,转义包含一个百分号%,后面跟两个表示字符ASCII的十六进制数。

 编码示例

字符 ASCII码 示例URL
~ 126(0X7E) http://www.joes-hardware.com/%7Ejoe

限制使用的一些字符

  由于有的字符在使用中有特殊含义被作为保留字使用且有的字符不在定义的US-ASCII可打印字符集中,除此以外还有字符会与某些因特网网关和协议产生混淆。所以在定义URL时应避免使用这些字符。

HTTP学习之URL与资源的更多相关文章

  1. 《HTTP权威指南》学习笔记——URL和资源

    URL与资源 URL是互联网资源的标准化名称 1.浏览互联网资源 URL是浏览器寻找信息时所需的资源位置 URI是一类更通用的资源标识符,URL是它的子集. URI的两个子集:URL和URN URL提 ...

  2. HTTP学习笔记——URL与资源

    什么是URL? 所有的东西都有一个标准化的东西,公交有线路号,飞机有航班号,个人有身份证号,你坐出租车,告诉司机师傅我要到石牌华师,他就能明白你的意思了.URL就是因特网资源的标准化名称.URL指向一 ...

  3. http协议进阶(二)URL与资源

    一.URL的语法  URL是互联网资源的标准化名称 URL提供了一种定位互联网上任意资源的手段,但这些资源要通过不同方案(协议:比如http.ftp.smtp)来访问,因此URL语法会略有差异 大部分 ...

  4. HTTP权威指南笔记-2.URL与资源

    2.1 URI与URL.URN URL是浏览器寻找信息时所需的具体位置.URl是人们对HTTP和其他协议的常用访问点:浏览器指向一个URL,浏览器就会发送适当的协议报文向服务器获取内容. URI是一类 ...

  5. URL与资源

    资源推荐 1.HTTP权威指南. <HTTP权威指南>由古尔利所著,<HTTP权威指南>详细解释了HTTP协议,包括HTTP是如何工作的,如何用HTTP来开发基于Web的应用程 ...

  6. Springboot学习02-webjars和静态资源映射规则

    Springboot学习01-webjars和静态资源映射规则 前言 1-以前我们在IDEA中创建一个项目,添加web依赖包,我们现在是一个web应用,应该在man目录下面有一个webapp文件夹,将 ...

  7. HTTP权威指南读书笔记(一)HTTP概述、URL和资源及报文详解

    一.HTTP概述 1.WEB客户端和服务器. 2.资源:资源可以是各种格式的静态文件,也可以是应用程序. 3.媒体类型 4.URI:统一资源标识符 URL:统一资源定位符. URL的第一部分称为方案: ...

  8. 『NiFi 学习之路』资源 —— 资料汇总

    一.概述 由于 NiFi 是一个比较新的开源项目,国内的相关资料少之又少. 加之,大家都知道,国内的那么些个教程,原创都只是停留在初级使用阶段,没有更多深入的介绍. 再者,其余的文章不是东抄抄就是西抄 ...

  9. 学习WWDC的好资源!

    学习WWDC的好资源. 大家都知道.要看Apple每年一度的WWDC,仅仅要到它的Developer站点去就能够了.那里有每年的研讨会视频,并且还能够下载每一个视频的SD或HD视频文件,以及相关的演示 ...

随机推荐

  1. jQuery Validate 无法验证 chosen-select元素

    chosen-select元素执行了chosen()方法后,为select元素加上了style="display: none;"进行隐藏,然后重新构造了一个看起来像select的下 ...

  2. Windows10 IIS配置PHP运行环境(原创)

    在Windows 10/8 的IIS(8.0)中搭建PHP运行环境: 如果解决了您的问题,文章底部点击下关注,做原创内容不容易,谢谢.转载请注明出处 PS:顺便推荐下自己写的,开源PHP极速后台开发框 ...

  3. sqlite 用法整理

    转载:http://blog.csdn.net/zhaoweixing1989/article/details/19080593 先纪录到这,以后慢慢整理. 1. 在Android下通过adb she ...

  4. 【深入理解JAVA虚拟机】第三部分.虚拟机执行子系统.2.虚拟机类加载机制

    1.概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验. 转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 2.类加载顺序 类从被加载到虚拟 ...

  5. February 16 2017 Week 7 Thursday

    Other men live to eat, while I eat to live. 很多人为食而生存,而我为生存而食. Just the same, either you eat to live ...

  6. Fcoin和Coinex,谁更值得投资?

    2018年是数字货币市场很熊的一年,大部分币种在这一年下跌超过了90%.但是这一年对于数字货币的发展也是不平凡的,可以说是至关重要的一年.通证经济商业模型在这一年萌芽,并茁壮成长,2018是通证经济元 ...

  7. [原]Android打包之Eclipse打多渠道包

    Android自动打包流程详细图: 步骤一和步骤二参考:[原]Android打包之Eclipse打包 步骤三:编写build.xml <?xml version="1.0" ...

  8. dom4j.jar有什么作用?

    om4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源代 ...

  9. C++禁止使用拷贝构造函数和赋值运算符方法

    1.将拷贝构造函数和赋值运算符声明为私有,并不予实现 class Uncopyable { private: Uncopyable(const Uncopyable &); // 阻止copy ...

  10. Yii2.0随笔 路由

    1.去掉index.php,按照pathinfo模式访问 例:http://***.com/控制器/方法 (1)把web服务器的网站目录指向所在模块的web目录 (2)在main.php的 'comp ...