@songying
2018-07-03T20:58:46.000000Z
字数 3249
阅读 1161
HTTP
web服务器: Web 内 容 都 是 存 储 在 Web 服 务 器 上 的。Web 服 务 器 所 使 用 的 是 HTTP 协 议
web客户端:客户端向服务器发送 HTTP 请求, 服务器会在 HTTP 响应中回送所请求的数据
web资源:Web 服务器文件系统中的资源
MIME 类型: Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型,当 Web浏览器从服务器中取回一个对象时,会去查看相关的 MIME 类型,看看它是否知道应该如何处理这个对象。
- HTML 格式的文本文档由 text/html 类型来标记。
- 普通的 ASCII 文本文档由 text/plain 类型来标记。
- JPEG 格式的图片为 image/jpeg 类型
- GIF 格式的图片为 image/gif 类型。
URI: 服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。
- URL: URL是资源标识符最常见的形式,URL 描述了一台特定服务器上某资源的特定位置.现在,几乎所有的 URI 都是 URL。
- URN: URI 的第二种形式就是统一资源名(URN),URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。
HTTP方法:方法会告诉服务器要执行什么动作
GET | 从服务器向客户端发送命名资源 |
---|---|
PUT | 将来自客户端的数据存储到一个命名的服务器资源中去 |
DELETE | 从服务器中删除命名资源 |
POST | 将客户端数据发送到一个服务器网关应用程序 |
HEAD | 仅发送命名资源响应中的 HTTP 首部 |
- 状态码: 每条 HTTP 响应报文返回时都会携带一个状态码。
200 | OK。文档正确返回 |
---|---|
302 | Redirect(重定向)。到其他地方去获取资源 |
404 | Not Found(没找到)。无法找到这个资源 |
URI 是一类更通用的资源标识符,URL 实际上是它的一个子集。URI 是一个通用的概念,由两个主要的子集 URL 和 URN 构成,URL 是通过描述资源的位置来标识资源的,而 URN则是通过名字来识别资源的,与它们当前所处位置无关。
目前来看,网络中使用的基本上都是URL。
URL大致可分为3部分,此处以http://www.joes-hardware.com/seasonal/index-fall.html
为例:
www.joes-hardware.com
。主机部分, 表示服务器的位置(如果知道域名与IP间的关系,会理解更好),这部分告知Web 客户端资源位于何处。/seasonal/index-fall.html
。表示资源路径,路径说明了请求的是服务器上哪个特定的资源。元素URL的语法格式为:<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
,在这些中最重要打元素就是上文所说的方案(scheme),主机(host), 路径(path)。一般情况下了解这三个就够了。
元素 | 描述 | 默认值 |
---|---|---|
方案 | 访问服务器以获取资源时要使用哪种协议 | 无 |
用户 | 某些方案访问资源时需要的用户名 | 匿名 |
密码 | 用户名后面可能要包含的密码,中间由冒号(:)分隔 | <E-mail 地址 > |
主机 | 资源宿主服务器的主机名或 IP 地址 | 无 |
端口 | 资源宿主服务器正在监听的端口号。 域名和端口之间使用“:”作为分隔符。HTTP的默认端口号为80 | 每个方案特有 |
路径 | 服务器上资源的路径名,由一个斜杠(/)将其与前面的URL 组件分隔开来 | 无 |
参数 | 某些方案会用这个组件来指定输入参数。参数为名 / 值对。URL 中可以包含多个参数字段,它们相互之间以及与路径 | 无 |
查询 | 查询组件的内容没有通用格式。用字符“?”将其与 URL 的其余部分分隔开来 | 无 |
片段 | 一小片或一部分资源的名字。通过字符“#”将其与 URL 的其余部分分隔开来 | 无 |
- 主机与端口
主机:告诉应用程序是哪台机器装载了资源。
举个例子,当你在购买了云服务器想要为你的网站提供后台服务时,你需要申请一个服务器IP地址(如http://192.168.10.10
)来作为主机名。
恰好你购买了一个域名,并将该域名与此IP绑定,那么此时这个域名也叫做你的主机名。如http://www.songyingxin.com
端口:指定了在这台机器的什么地方能找到能对目标资源进行访问的服务器。r如Http协议的默认端口是80,表示你可以通过访问服务器的80端口获取相关资源
很多服务器都要求输入用户名和密码才会允许用户访问数据。常见的实例为FTP服务。
ftp://ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@ftp.prep.ai.mit.edu/pud/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pud/gnu
例子1:例子1中没有用户和密码组件。如果某方案(如FTP)要求输入用户名和密码,但用户没有提供,它通常会插入一个默认的用户名和密码。
anonymous
作为用户名。其中@
将用户和密码组件与URL的其他部分隔开(本例中@
后的是主机名)。例子3:例子3指定anonymous
作为用户名,my_passwd
作为密码,用户名和密码之间使用:
分开。
路径说明资源位于服务器的什么地方。可以将服务器看作电脑,对比一下你文件存储方式,路径说明了你文件的存储位置。
参数部分由字符;
将其与URL其他部分分割开来。参数为应用程序提供访问资源所需的所有附加信息。
http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
这个例子中有两个路径段,hammers和index.html。二者都有参数。hammers路径段有参数sale,其值为sale,index.html段有参数graphics,其值为true。
这部分并不常用。
通过查询部分来缩小锁清秋资源类型范围。从?
之后的部分为查询部分。查询与查询之间使用&
分开
http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue
例子中我们使用了两个查询部分item=12731&color=blue
,表示查询文件中item为12731,color为blue的条目。
在《计算机网络》一书中称其为”锚“。片段用来表示一个资源内部的片段。
httP://www.song/xom/tools.html#name
查找tool.html文件中关于name 的那部分内容
HTTP 服务器通常只处理整个对象,3 而不是对象的片段,客户端不能将片段传送给服务器(参见图 2-3)。浏览器从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源。
绝对URL包含访问资源所需的全部信息。如:http://www.song.com/tools.html
相对URL是相对于基础URL进行解析。如./tools.html
。其中.
表示的就是基础URL。
要注意的是,相对 URL 为保持一组资源(比如一些 HTML 页面)的可移植性提供了一种便捷方式。如果使用的是相对 URL,就可以在搬移一组文档的同时,仍然保持链接的有效性,因为相对 URL 都是相对于新基础进行解释的。
基础URL
有些资源会显式地指定基础 URL。比如,HTML 文档中可能会包含一个定义了基础 URL 的 HTML 标记 ,通过它来转换那个 HTML 文档中的所有相对URL。
如果在一个没有显式指定基础 URL 的资源中发现了一个相对 URL,可以将它所属资源的 URL 作为基础。
在某些情况下,没有基础 URL。这通常意味着你有一个绝对 URL;但有时可能只是一个不完整或损坏了的 URL。
解析相对URL