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. Oracle数据库从入门到精通 单行函数问题

    视频课程:李兴华 Oracle从入门到精通视频课程 学习者:阳光罗诺 视频来源:51CTO学院 Oracle数据库从入门到精通-单行函数 在数据库中,为了方便用户的数据开发,往往会提供一系列的支持函数 ...

  2. AJAX原生JavaScript写法

    GET方式 //创建XMLHttpRequest对象,为考虑兼容性问题,老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象 var ajax = windo ...

  3. 【Leetcode】【Medium】Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  4. [翻译] iOS开发工具的介绍(第一部分)

    IOS DEVELOPMENT TIPS & TRICKS - PART I http://blog.trifork.com/2013/12/19/ios-development-tips-t ...

  5. 让NSUserDefaults使用起来像对象一样容易

    让NSUserDefaults使用起来像对象一样容易 巧妙的设计,是为了简化开发提升效率而存在. 设计要点: 1. 单例模式 2. 重写setter,getter方法 3. 专门的类来管理单例 使用时 ...

  6. cocos2d-x 3.1 编译脚本android-build.py

    写在前面: 前段时间下载了cocos2d-x 3.1,按照官网的教程,配置环境,编译打包,走了一遍,感觉不错,顺便发现其中用了很多python的脚本文件,比如今天要说的android-build.py ...

  7. Python初学者第二天 用户输入和注释

    2day Python基础语法: 1.用户输入和注释 用户输入:   代码注释:# 注释部分不会被执行,或用来帮助理清代码逻辑   2.数据类型:数字 int:整数   long:长整形  注:Pyt ...

  8. python 函数&条件,循环

    条件if <条件判断1>: <执行1>elif <条件判断2>: <执行2>elif <条件判断3>: <执行3>else: & ...

  9. postgraSql支持View可以修改的两种方法。

    http://www.postgresqltutorial.com/postgresql-views/ Creating PostgreSQL updatable views – gives you ...

  10. 在WAS控制台,环境下添加新的虚拟主机别名

    错误现象: 11/16/13 16:52:22:612 CST] 00000021 util          W com.ibm.ws.webcontainer.util.VirtualHostCo ...