URL简介(上)

翻译 2017年01月03日 23:34:04

URLUniform Resource Locator,统一资源定位符),作为网络资源的标准名称,使用一系列的信息标识来帮助我们定位网络资源,同时也告诉我们如何来获取资源。

实际上,URLURIUniform Resource Identifier,统一资源标识符)的子集,URI作为一个基本概念,由两部分组成,URLURNUniform Resource Name)。URL通过描述资源的位置来定位资源,而URN通过名字来查找资源,而不管资源是否被迁移了。

HTTP协议中使用URI来进行资源定位,但是应用程序中实际上只使用URL子集。

例如我们想要访下面的URL

http://www.joes-hardware.com/seasonal/index-fall.html:

· URL前面的httpURL的方案(scheme),URL的方案告诉网络客户端应该如何获取这个资源,在这个例子中,URL告诉客户端使用HTTP协议来获取这个资源。

· 第二部分“www.joes-hardware.com”为服务器地址,这个信息告诉客户端到哪儿去获取这个资源。

· 最后一部分“seasonal/index-fall.html”为资源路径,资源路径标明了资源在服务器上的本地路径。

下面这张图说明了整个解析过程:

【原创】URL简介 - 远行的风 - 风的驿站

除了使用HTTP协议来获取资源,我们还可以使用其他的协议来获取互联网的资源,例如:

mailto:president@whitehouse.gov

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

file:///c:/WINDOWS/somedata.dat

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

git://github.com/user/project-name.git

ed2k://|file|%5BMAC%E7%89%88%E6%9E…

URL定义了一种命名资源的统一方式,大多数的URL都具有“scheme://server location/path”的格式,因此,对于各种不同地方的资源,无论我们获取资源的方式有何不同,命名资源的方式始终是唯一的,任何人通过这个名字都能找到这个资源。

网络资源多种多样,URL的方案也各不相同,但是他们大多都遵循统一的URL语法,下面列出了组成URL的通用的9个部分,大多数URL都符合下面的定义:

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

当然,上面列出的是只是理论上的组成部分,实际当中,几乎没有URL包含上面的所有部分,URL中重要的三个部分是schemehostpath,下表列出了每个组成部分的简要说明:

组成部分

描述

默认值

scheme

定义了使用哪种协议来获取资源

无默认值

user

获取资源需要的用户名

匿名

password

获取资源的密码,紧跟用户名,中间以冒号“:”分隔

<Email address>

host

资源服务器的主机名或者IP地址

无默认值

port

资源服务器侦听的端口,很多scheme类型都有自己默认的端口(例如HTTP协议用80端口)

默认值因scheme而异

path

服务器上的资源的本地路径,通过斜线“/”与前面的URL部分分隔开

无默认值

params

某些scheme中使用这个组成部分来传递输入参数,参数以键值对儿的形式出现,一个URL中可以出现多个参数,彼此之间以分号“;”分隔

无默认值

query

某些scheme中使用query来向某些应用传参(例如数据库、公告板、搜索引擎等等),对于这部分没有特定的格式,query使用问号“?”与URL其他部分分隔开

无默认值

frag

资源的某个部分的名称,在向服务器发请求时,并不会发送frag部分,仅在客户端内部使用,frag使用井号“#”与URL其他部分分隔开

无默认值

http://www.joes-hardware.com:80/index.html为例,方案(scheme)为httphostwww.joes-hardware.comport80path/index.html

下面具体来说明。

· 方案(scheme):决定了获取资源所使用的方式,它告诉应用程序应该以哪种协议来解析URL,方案必须由字母开头,通过冒号“:”与URL其他部分分隔开。方案名不区分大小写,所以HTTPhttp效果相同。

· 主机名(host)和端口(port):用来指示在网络中哪一个主机拥有该资源,并且从哪一个端口进入能够访问到资源。host既可以是主机名(例如www.joes-hardware.com)也可以是IP地址,端口号则表明了服务器通过哪一个端口侦听请求。

· 用户名(username)和密码(password):在访问资源前,很多服务器需要客户端提供一个具有访问权限的用户名和密码,FTP服务器就是一个很好的例子,下面列出了一些具体的例子:

ftp://ftp.prep.ai.mit.edu/pub/gnu

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

第一个例子并没有提供用户名和密码,这时候会使用默认的用户名和密码来访问,例如上面的第一个FTP的例子,会使用“anonymous”作为用户名,默认密码则因浏览器不同而有所差异。

第二个例子提供用户名为anonymous作为用户名,密码默认,用户名和密码使用“@”符号与URL的其他部分分隔开。

· 路径(path):指明了资源在服务器上的具体位置,路径通常是分层的文件路径。服务器使用路径来找到具体的资源,路径使用“/”来分段,对于每一段都可以指定参数部分(params)。

· 参数(params):对于很多方案,仅仅提供主机名和路径是不够的,例如FTP使用两种方式传输文件:二进制(binary)和纯文本(text),如果不通过指定参数来区分的话,就无法得到正确的资源格式。URL中的参数为键值对儿,通过分号来分隔,用来提供额外的信息,例如:

ftp://prep.ai.mit.edu/pub/gnu;type=d

其中type=d是唯一的参数。

我们前面提到了,路径的每一段都可以指定参数,下面就是一个例子:

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

· 查询字符串(querystring):有些资源,例如数据库资源,可以通过查询字符串来缩小查询范围,比如:

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

通过请求字符串来返回id12731item

对于查询字符串来说没有格式上的要求,但是有些字符不能出现,需要进行转义,并且按照惯例来说,查询字符串通常由一系列的“name=value”组成,中间由“&”符号进行连接。

· 对于某些资源类型,例如HTTP资源,可以对资源进一步细分,例如一个大的文本可以细分为段落,通过URL可以找到改文本资源,但是更理想的是,可以精确到每一段。

例如下面的例子:

http://www.joes-hardware.com/tools.html#drills

用来获取tools.html上名为“drills”的部分。由于HTTP服务器通常只处理整个资源,因此浏览器实际上并不会将frag发送给服务器,当从服务器返回整个资源后,浏览器根据frag部分对结果进行筛选展示。

 

摘译自《HTTP-The Definitive Guide by David Gourley & Brian Totty,内容有改动。

URL详解

一:URL举例 就以下面这个URL为例,介绍下普通URL的各部分组成 http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=2461...
  • tao546377318
  • tao546377318
  • 2017年04月05日 20:07
  • 803

详解URL的组成

很久很久以来,我对浏览器地址栏的信息了解的甚少,只知道域名(估计不知道是这么叫)。唉。。。真是很汗颜啊!在软件专业都混了两年了,还是个菜鸟。说真的,有的时候觉得计算机这个领域真的真的有太多的东西要学了...
  • ergouge
  • ergouge
  • 2012年11月15日 08:30
  • 38495

利用URL下载

  • 2012年11月21日 09:32
  • 6KB
  • 下载

URL基本介绍

语法URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。 URL的一般语法格式为: (带方括号[]的为可选项)protocol :// hostname[:port] / path / ...
  • qq_29635463
  • qq_29635463
  • 2016年06月15日 16:04
  • 398

URL介绍

URL(Uniform Resource Locator),统一资源定位符,是互联网上标准资源的地址。大部分URL语法都由9个部分构成: ://:@:/;?# 不同scheme的URL一般只包含其...
  • liuy_98_1001
  • liuy_98_1001
  • 2014年11月28日 11:06
  • 1843

URL与资源(之Url地址栏中的jsessionId有分号)《包括相对路径和绝对路径的根本分析》

URL与资源(之Url地址栏中的jsessionId有分号)《包括相对路径和绝对路径的根本分析》 URL与资源 浏览因特网资源 URL(Uniform Resource Locator)...
  • ye_sheng
  • ye_sheng
  • 2015年09月12日 17:25
  • 2910

URI与URL详解

看开源框架经常看到会用到URL或者URI之类的,现在就总结一下URL与URI吧。
  • Readiay
  • Readiay
  • 2016年10月19日 20:34
  • 5511

URL Protocol应用

最近见一资源管理系统使用web与win32的窗口进行通信感觉挺有意思,偶尔在购物网站看到了QQ消息的弹窗效果 类似这样点击后弹出QQ消息窗口然后google下  有答案,是使用了win的一个协议htt...
  • shaowenchang
  • shaowenchang
  • 2010年09月17日 01:24
  • 1434

URL简介

1、URL的组成部分。 1)、方案 ,访问资源用的协议。例如http,ftp 2)、用户 ,某些方案访问时需要用的用户名 默认值为:匿名 ...
  • gogogo_zzz
  • gogogo_zzz
  • 2016年09月22日 09:09
  • 70
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:URL简介(上)
举报原因:
原因补充:

(最多只允许输入30个字)