HTTP学习(二)

文章是学习记录使用,摘自《HTTP权威指南》

大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上:
: //:@chost>:/ ;?#

几乎没有哪个URL 中包含了所有这些组件。URL最重要的3个部分是方案(scheme主机(host)和路径(path)。
在这里插入图片描述
方案 — 使用什么协议
方案实际上是规定如何访问指定资源的主要标识符,它会告诉负责解析URL的应用程序应该使用什么协议。在我们这个简单的 HTTP URL中所使用的方案就是http方案组件必须以一个字母符号开始,由第一个“:”符号将其与URL的其余部分分隔开来。方案名是大小写无关的,因此URL
http://www.joes-hardware.com和
HTTP://www.joes-hardware.com
是等价的。

主机与端口
要想在因特网上找到资源,应用程序要知道是哪台机器装载了资源,以及在那台机器的什么地方可以找到能对目标资源进行访问的服务器。URL的主机和端口组件提供了这两组信息。
主机组件标识了因特网上能够访问资源的宿主机器。可以用上述主机名www.joeshardware.com,或者IP地址来表示主机名。比如,下面两个URL就指向同一个资源——第一个URL是通过主机名,第二个是通过IP地址指向服务器的:
http://www.joes-hardware.com:80/index.html
http://161.58.228.45:80/index.html
端口组件标识了服务器正在监听的网络端口。对下层使用了TCP协议的 HTTP来说,默认端口号为80。

用户名和密码
更有趣的组件是用户和密码组件。很多服务器都要求输入用户名和密码才会允许用户访问数据。FTP服务器就是这样一个常见的实例。这里有几个例子:
ftp:/lftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@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
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
第一个例子没有用户或密码组件,只有标准的方案、主机和路径。如果某应用程序使用的URL方案要求输入用户名和密码,比如FTP,但用户没有提供,它通常会插入一个默认的用户名和密码。比如,如果向浏览器提供一个 FTP URL,但没有指定用户名和密码,它就会插入anonymous(匿名用户)作为你的用户名,并发送一个默认的密码((Internet Explorer会发送IEUser,Netscape Navigator则会发送mozilla)。

第二个例子显示了一个指定为anonymous 的用户名。这个用户名与主机组件组合在一起,看起来就像E-mail地址一样。字符“@”将用户和密码组件与URL 的其余部分分隔开来。

在第三个例子中,指定了用户名(anonymous)和密码(my_passwd),两者之间由字符“:”分隔。

路径
URL 的路径组件说明了资源位于服务器的什么地方。路径通常很像一个分级的文件系统路径。比如:
http://www.joes-hardware.com:80/seasonal/index-fal1.html
这个URL中的路径为/seasonal/index-fall.html,很像UNIX文件系统中的文件系统路径。路径是服务器定位资源时所需的信息。‘可以用字符“I”将HTTP URL的路径组件划分成一些路径段(path segment)(还是与UNIX文件系统中的文件路径类似)。每个路径段都有自己的参数(param)组件。

参数
对很多方案来说,只有简单的主机名和到达对象的路径是不够的。除了服务器正在监听的端口,以及是否能够通过用户名和密码访问资源外,很多协议都还需要更多的信息才能工作。

查询字符串
很多资源,比如数据库服务,都是可以通过提问题或进行查询来缩小所请求资源类型范围的。
假设Joe的五金商店在数据库中维护着一个未售货物的清单,并可以对清单进行查询,以判断产品是否有货,那就可以用下列URL来查询Web数据库网关,看看编号为12731的条目是否有货:
http://www.joes-hardware.com/inventory-check.cgi?item=12731
这个URL 的大部分都与我们见过的其他URL类似。只有问号(?)右边的内容是新出现的。这部分被称为查询(query)组件。URL的查询组件和标识网关资源的URL路径组件一起被发送给网关资源。基本上可以将网关当作访问其他应用程序的访问点

片段
有些资源类型,比如HTML,除了资源级之外,还可以做进一步的划分。比如,对一个带有章节的大型文本文档来说,资源的URL会指向整个文本文档,但理想的情况是,能够指定资源中的那些章节。
为了引用部分资源或资源的一个片段,URL支持使用片段(frag)组件来表示一个资源内部的片段。比如,URL可以指向HTML文档中一个特定的图片或小节。片段挂在URL的右手边,最前面有一个字符“#”。比如:
http://www.joes-hardware.com/tools.html#drills
在这个例子中,片段drills 引用了Joe的五金商店eb服务器上页面/tools.html中的个部分。这部分的名字叫做drills。

字符限制
在URL 中,有几个字符被保留起来,有着特殊的含义。有些字符不在定义的US-ASCII可打印字符集中。还有些字符会与某些因特网网关和协议产生混绢,因此不赞成使用。
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值