4. URL

1.URL详解

URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下:

schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]
scheme               指定低层使用的协议(例如:http, https, ftp)
  host                   HTTP服务器的IP地址或者域名
  port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。
  如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
  path                   访问资源的路径
  url-params  id=8079
  query-string       发送给http服务器的数据
  anchor-             锚
  URL 的一个例子
http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff
Schema: http
host: www.mywebsite.com
path: /sj/test
URL params: id=8079
Query String: name=sviergn&x=true
Anchor: stuff

URI , URL , URN

URI = Universal Resource Identifier
URL = Universal Resource Locator
URN = Uniform Resource Name

这里写图片描述
这里写图片描述

关于URLURL是URI的一种,不仅标识了Web 资源,
还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。
关于URN:

URN是URI的一种,用特定命名空间的名字标识资源。
使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。
我们一起来看下面这个虚构的例子。这是一个URI:
http://bitpoetry.io/posts/hello.html#intro

我们开始分析
http://
是定义如何访问资源的方式。另外
bitpoetry.io/posts/hello.html
是资源存放的位置,那么,在这个例子中,
#intro
是资源。

URL是URI的一个子集,告诉我们访问网络位置的方式。在我们的例子中,URL应该如下所示:
http://bitpoetry.io/posts/hello.html

URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式,如下所示:
bitpoetry.io/posts/hello.html#intro
URL的格式由下列三部分组成:

协议(或称为服务方式);
存有该资源的主机IP地址(有时也包括端口号);
主机资源的具体地址。如目录和文件名等。

  第一部分和第二部分之间用”://”符号隔开,第二部分和第三部分用”/”符号隔开。
  第一部分和第二部分是不可缺少的,第三部分有时可以省略。
  目前最大的缺点是当信息资源的存放地点发生变化时,必须对URL作相应的改变。
  因此人们正在研究新的信息资源表示方法。
URI是以某种统一的(标准化的)方式标识资源的简单字符串,一般由三部分组成:
访问资源的命名机制。
存放资源的主机名。
资源自身的名称,由路径表示。
  典型情况下,这种字符串以scheme开头,语法如下:
  [scheme:] scheme-specific-part
  http://www.google.com,其中http是scheme,//www.google.com是 scheme-specific-part,
  并且它的schemescheme-specific-part被冒号分开了。
  有的URI指向一个资源的内部。这种URI以”#”结束,并跟着一个anchor标志符(称为片断标志符)。
  相对URI不包含任何命名规范信息。它的路径通常指同一台机器上的资源。
  相对URI可能含有相对路径(如:“..”表示上一层路径),还可以包含片断标志符。
URI的常见问题

难以输入,URI不必要的冗长。
莫明其妙的大写字母。
不常见的标点符号。
在纸介质上显示很困难,一些字符在纸上打印出来不容易辨认。
主机和端口的问题除了 scheme-specific 部分,domain 和port 也可能给用户带来困惑。

2.详解

例子:
http://www.example.org:56789/a/b/c.txt?t=win&s=chess#para5
1.协议部分 :  http

2.URL 授权:在 :// 字符串之后和下一个斜杠之前(或者到 URL 末尾,如果没有尾随斜杠的话)。
它包含一个完全限定的域名(或者可以解析成一个 IP 地址的其他名称,如本地网络上一台机器的未限定的名称),
或者一台 Internet Web 服务器的 IP 地址,后面可以选择带有一个冒号( : ) 和一个端口号。如果省略,默认为 80 。
在这个例子中,授权是  www.example.org:56789,
它包含完全限定域名www.example.org,后面接着端口号 56789

3. URL 路径:从授权后面的问号( ? )( 或者到 URL 的末尾,如果没有问号的话)的
那一部分称为 URL 的路径。前导斜杠是路径的一部分,但问号不是。因此,刚才给出的路径是 
/a/b/c.txt 。这看起来非常像一个 Linux 文件引用一个名为 c.txt 的文件,
该文件位于系统的根(/)目录下面的目录a下的子目录b下面,
这一事实并不是完全巧合。在许多情况下,URL 的路径部分实际上是由服务器用基文件(base file)路径连接而成的,
以便在服务器的系统上形成一条实际的文件路径。

4. URL 的查询部分(query):在路径上可能有一个问号,然后接着信息,直到一个数字符号(#)为止。
问号和数字符号直接(但不包含问号和数字符号)的信息是 URL 的查询(query)部分,它一般是一个具有所示形式的字符串,
称为查询字符串(query string)。如,t=win&s=chess。起初,URL 的查询部分打算把搜索名称传递给一个 web 服务器。
因此在这个示例中,它可能是用户正在搜索一个资源,
该资源的标题中包含字符串"win",它与主题"chess"相关。

浏览器通过用一个问号连接 URL 的路径和查询部分,形成来自该 URL 的 HTTP请求的请求 URI 部分。
因此,示例的URL 的请求 URI如下:
/a/b/c.txt?t=win&s=chess

从语法上来讲,仅当 URL 的路径部分存在时,URL 的查询部分才会存在。如果同时省略了 
URL 中的路径部分和查询部分,那么就必须把请求 URI 设置成 /,
它成为 根路径。

6.分段(fragment):HTTP 模式的 URL 的最后一个可选部分---数字符号后面(但不包含它)的部分---称为 URL 的分段(fragment),
分段中包含的字符串称为 分段标示符(fragment identifier)。
浏览器使用分段标示符来滚动 HTML文档。
总结:当在浏览器输入 URL ,并按下 Enter 键。浏览器将生成如下所示的 HTTP 请求消息。
该请求行起始于 GET .  URL的路径和查询部分将作为起始行的第二部分,即请求 URI 。
假定浏览器遵守 HTTP/1.1 ,起始行的最后一个部分将是字符串 HTTP/1.1 (这个字段必须大写)。
请求还将包含一个 Host 头部字段,
它的值时 URL 的授权部分。URL 的分段没有发送到 Web 服务器,
而是由浏览器用于修改它显示任何 HTML 文档的方式,这些 HTML 文档将在 HTTP 响应中发送到浏览器,
而 HTTP 响应式作为整个请求的结果返回的。
GET /a/b/c.txt?t=win&s=chess HTTP/1.1
...
Host:www.example.org:56789
...

http://blog.csdn.net/ergouge/article/details/8185219

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值