URL是因特网资源的标准化名称。URL指向每一条电子信息,告诉他们位于何处,以及如何与之进行交互。

  1. URL语法,以及各种URL组件的含义及其所做的工作。
  2. 很多Web客户端都支持额URL快捷方式,包括相对URL和自动扩展URL
  3. URL编码和字符规则
  4. 支持各种因特网信息系统的常见URL方案
  5. URL的未来,包括URN—这种框架可以在对象从一处搬移到另一处时,保持稳定的访问名称。

2.1 浏览因特网资源

URL是浏览器寻找信息是所需的资源位置。通过URL,人类和应用程序才能找到、使用并共享因特网上大量的数据资源。

URI是一类更通用的资源标识符,有URL和URN组成。URL通过描述资源的位置来标识资源,RUN通过名字来识别资源,与他们当前所处位置无关。

HTTP应用程序处理的知识URI的URL子集。URL分一下三部分

  1. URL的第一部分(htp)是URL的方案。方案可以告知Web客户端怎样访问资源
  2. URL的第二部分指的是服务器的位置。这部分告知Web客户端资源位于何处
  3. URL的第三部分是资源路径,路径说明了请求的是服务器上那个特定的本地资源

URL可以通过HTTP之外的其他协议来访问资源。他们可以指向因特网上的任意资源,比如个人的E-mail账户

Maito: president@whirehouse.gov

或者其他协议。比如通过文件传输协议(File Transfer Protocol ,FTP)才能获取的各种文件。

ftp://ftp.lots-o-books.com/pub/complete-preice-list.xls

或者从流视频服务器上希在电影:

rtsp: //www.joes-hardware.com:554/interview/cto_video

URL提供了一种统一的资源命名方式。

URL为用户及他们的浏览器提供了找到信息所需的所有条件。URL定义了用户所需的特定资源,他位于何处以及如何获取他。。

2.2  URL的语法

URL提供了一种定位因特网上任意资源的手段,但这些资源师可以通过各种不同的方法来访问的,随着方案不同有所不同。

大部分URL遵循通用的URL语法,大多数方案的URL语法都建立再这个有9个部分构成的通用格式上。

<scheme>://<user>:<password>@<host>:<port>/<path>:<param>?<query>#<frag>

         方案、用户、密码、主机、端口、路径、参数、查询、片段

 

         几乎没有哪个URL中包含了所有这些组件,URL最重要的3个部分是方案(scheme),主机(host)和路径(path)。

2.2.1 方案---是用什么协议

方案实际上是规定如何访问指定资源的主要标识符,他会告诉负责间隙URL的应用程序应该使用什么协议。

语法: 方案组件必须以一个字母符号开始,由第一个‘:’,符号将其与URL的其余部分分割开来。方案名是大小写无关的。

2.2.2 主机与端口

URL主机和端口号组件提供了 装载了资源的机器位置和目标资源服务器的具体机器位置。主机组件标识了因特网上能够访问资源的宿主机器,可以用上述主机名或者IP地址来表示主机名。端口组件表示了服务器正在监听的网络端口,对下层使用了TCP协议的HTTP来说,默认端口是80。

2.2.3 用户名和密码

用户和密码组件,很多服务器都要求输入用户名和密码才会允许用户访问数据。FTP服务器就是这样一个常见的实例。

ftp;//anonymous:my_password@ftp.prep.ai.mit.edu/pub/gnu

用‘@’将用户和密码组件与URL的其余部分分隔开。2

2.2.4 路径

URL的路径组件说明了资源位于服务器的什么地方。路径通常很像一个分级的文件系统路径。可以用字符‘/’将HTTP URL的路径组件划分成一些路径短(path segment)。每个路径短都有自己的参数(param)组件

2.2.5 参数

为了向应用程序提供他们所需的输入参数,以便正确的与服务器进行交互,URL中有一个参数组件。这个组件上就是URL中的名值对列表,由字符‘:’将其余URL的其余部分分隔开。

http://www.joes-hardware.com/hammers:sale=false/index.html:graphics=true

2.2.6 查询字符串

很多资源比如数据库服务都是可以通过提问题或进行查询来缩小所请求资源来缩小范围的。

http://www.joes-hardware.com/inventory-check.cgi?item=12731

(?)右边的内容是查询组件,URL的查询组件和标识网关资源的URL路径组件一起被发送给网关资源。

查询组件的格式没什么要求。按照常规,很多网关都希望查询字符串以一系列“名/值”对形式出现,名值对之间用“&”分隔:

http://ww.joes-hardware.com/inventory-check.cgi?item=12731&color=blue

2.2.7 片段

为了引用部分资源或资源的一个片段。URL支持使用片段(frag)组件来表示一个资源内部的片段。

http;//ww.joes-hardware.com/tools.html#drils

HTTP服务器通常处理完整的对象,而不是对象的片段。客户端能不能将片段传送给服务器,浏览器从服务器获得咧真个归元之后,会根据片段来显室你感兴趣的那部分资源。

(感觉就像html中的锚)

2.3 URL快捷方式

Web客户端可以理解并使用几种URL快捷方式,相对URL是在某资源内部指定一个资源的便捷缩略方式。很多浏览器还支持URL的‘自动扩展’,也就是用户输入URL的一个关键部分,然后由浏览器将其余部分填充起来。

2.3.1 相对URL

URL有两种方式:绝对的和相对的。绝对URL中包含访问资源所需的全部信息。相对URL是不完整的,要从相对URL中获取访问资源所需的全部信息,就必须相对于另一个被称为其基础(base)的URL进行解析。

相对URL只是URL的片段或一小部分。处理URL的应用程序要能够在相对和绝对URL之间进行转换。为保持一组资源的便携性提供了一种便捷方式。如果使用的是相对URL,就可以在搬移一组文档的同时,仍然保持连接的有效性,因为相对URL都是相对于新基础进行解释的,这样就可以实现在其他服务器上提供镜像内容之类的功能了。

  1. 1.      基础URL

转换处理的第一步就是找到基础URL,基础URL是作为相对URL的参考点使用的。

l  在资源中显式提供

l  封装资源的基础URL

l  没有基础URL

  1. 2.      解析相对引用

要将相对URL转换为一个绝对URL,下一步要做的就是将相对URL和基础URL划分成组件段。

实际上,这样只是在解析URL,这种做法会将其划分成一个个组件,因此通常会称作分解(decomposing)URL。基础和相对URL划分成组件,就可以应用算法完成转换。

2.3.2 自动扩展URL

有些浏览器会在用户提交URL之后,或者在用户输入的时候阐释自动扩展URL。有两种方式:

  1. 主机名扩展

举例: 输入baidu,浏览器自动在主机名中插入www.和.com

  1. 历史扩展

将以前用户访问过的URL历史存储起来

2.4 各种令人 的字符

URL是可移植的(portable)。他要同意的命名因特网上所有的资源,设计URL使其可以通过任意因特网协议安全的传输是 很重要的。

2.4.1 URL字符集

默认的计算机系统字符集通常都倾向于以英语为中心。从历史上来看,很多计算机应用程序使用的都是US-ASCII字符集。US-ASCII使用7位二级制码来表示英文打字机提供的多数按键和少数用于文本格式和硬件通知的不可答应控制字符。

URL的设计者就将转义序列集成了进去,通过转义序列,就可以用US-ASCII字符集的有限自己对任意字符值或数据进行编码了,这样就实现了可移植性和完整性。

2.4.2 编码机制

为了避开安全字符集表示法带来的限制。人们设计了一种编码机制,用来表示URL中各种不安全的字符。通过一种‘转义’方法表示不安全字符的。包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数。

2.4.3 字符限制

在URL总,有几个字符白保留起来,有这特殊的含义。有些字符不在定义的US-ASCII可打印字符集中,还有些字符会与某些因特网网关和协议产生混淆,因此不赞成还是用。

2.4.4 另外一点说明

应用程序要按照一定规范工作。客户端应用程序再想其他应用程序发送任意URL之前,最好把所有不安全或首先自付都惊醒转换。只要对所有不安全字符都进行了编码,这个URL就是可在个应用程序之间共享的鬼发型师,野牛无需操心其他应用程序会被字符的任何特殊含义所迷惑了。

2.5 方案的世界

  • Http
  • https (使用了网景的SSL,SSL为HTP链接提供了端到端的加密机制。默认端口:443)
  • mailto
  • ftp
  • rtsp,rtspu
  • file
  • news
  • telnet

2.6  未来展望

URL是一种强有力的工具,他可以用来命名所有的现存对象而且可以很方便的包含已写信格式,URL还提供了一种可以在各种因特网协议间共享的统一命名机制。

但URL并不完美,他们表示的是实际的地址而不是准确的名字。

URN 无论对象搬移到什么地方,URN都能为对象提供一个稳定的名称。】、

永久统一资源定位符(persistent uniform resource locators,PURL)使用URL来实现URN功能的一个例子。

http 学习 1-2 chapter2-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. HTTP权威指南读书笔记(一)HTTP概述、URL和资源及报文详解

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

  7. 学习 Python 编程的 19 个资源 (转)

    学习 Python 编程的 19 个资源 2018-01-07 数据与算法之美 编译:wzhvictor,英文:codecondo segmentfault.com/a/119000000418731 ...

  8. HTTP权威指南-URL与资源

    URL与资源 URL是URI的子集 方案(http),主机(www.baidu.com),路径(/home/logo.png) 方案,其实有很多,HTTP.HTTPS.FTP,SMTP等等. http ...

  9. 第二章、URL与资源

    1 URL统一资源定位符 URL 是浏览器寻找信息时所需的资源位置.通过 URL,人类和应用程序才能找到.使用并共享因特网上大量的数据资源.URL是作为URI的一个子集,URI是一类更通用的资源标识符 ...

  10. HTTP权威指南之URL与资源

    前言 web基础中介绍了URI.URL与URN: URI是一类更通用的资源标识符,URL是它的一个子集: URI是一个通用的概念,它主要由URL与URN组成: URL是通过描述资源的位置来标识资源的, ...

随机推荐

  1. PHP注册审核做法

    1.注册页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  2. Yii2中request的使用

    1.普通的get和pst请求 $request = Yii::$app->request; $get = $request->get(); // equivalent to: $get = ...

  3. HDU 4941 Magical Forest(2014 Multi-University Training Contest 7)

    思路:将行列离散化,那么就可以用vector 存下10W个点 ,对于交换操作 只需要将行列独立分开标记就行   . r[i] 表示第 i 行存的是 原先的哪行         c[j] 表示 第 j ...

  4. 点击document隐藏某个div

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. C++模拟C#事件委托机制(一)

    原文来自于http://www.cnblogs.com/netssfy/articles/1652671.html 写了一段时间的C#代码后确实发现C#的事件委托非常好用.于是便想是否在C++中也能如 ...

  6. java数据结构_附11_图的接口定义

    图的接口定义 Graph public class UnsupportedOperation extends RuntimeException {public UnsupportedOperation ...

  7. Android新手踩到的一些雷,记录一下~

    这两天在搞一个android的app ,由于是新手,注定要踩很多坑. 这里是一些遇到的一些问题,网上各种找答案,感谢各位博主.这里记录一下,留待以后再看. 1. android layout_weig ...

  8. Identify Memory Leaks in Visual CPP Applications —— VLD内存泄漏检测工具

    原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于 ...

  9. PHP 单引号 与双引号区别

    在PHP中,字符串的定义可以使用单引号,也可以使用双引号. PHP允许我们在双引号串中直接包含字串变量,双引号串中的变量将被解释而且替换,而单引号串中的内容总被认为是普通字符.例如: $foo = 2 ...

  10. 开始学习Dojo

    学习:Dojo入门简易教程 Dojo Toolkit 简介 Dojo 于 2004 年创建,使开发 DHTML 和 JavaScript web 应用程序开发流程更为容易,隐藏了很多现代 web 浏览 ...