HTTP

HTTP 知识量:10 - 42 - 186

2.2 HTTP的实现方法><

使用URI定位资源- 2.2.1 -

HTTP协议使用URI定位互联网上的资源,因为URI的特定功能,互联网上任意位置的资源都可以被访问到。

当客户端请求访问资源时,URI需要作为请求报文中的请求URI一同发送。指定请求URI的方式有很多:
1、URI作为完整的请求URI:

GET http://pnotes.cn/index.htm HTTP/1.1

2、在首部字段Host中写明网络域名或IP地址:

GET /index.html HTTP/1.1
Host: pnotes.cn

如果不是访问特定资源而是对服务器本身发起请求,可以用*代替请求的URI:

OPTIONS * HTTP/1.1

HTTP方法- 2.2.2 -

向请求URI指定的资源发送请求报文时,采用称为方法的命令。HTTP支持的主要方法如下:

方法说明支持的HTTP协议版本
GET获取资源1.0、1.1
POST传输实体主体1.0、1.1
PUT传输文件1.0、1.1
HEAD获得报文首部1.0、1.1
DELETE删除文件1.0、1.1
OPTIONS询问支持的方法1.1
TRACE追踪路径1.1
CONNECT要求用隧道协议连接代理1.1
LINK建立和资源之间的联系1.0
UNLINK断开连接关系1.0

注意:LINK和UNLINK实际已被废弃。另外,方法名区分大小写,需要总是使用大写字母。

GET- 2.2.3 -

GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。

GET /index.html HTTP/1.1
Host: www.pnotes.cn

POST- 2.2.4 -

POST方法用来传输实体的主体。虽然GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是使用POST方法。

POST /submit.cgi HTTP/1.1
Host: www.pnotes.cn 
Content-Length: 1230

PUT- 2.2.5 -

PUT方法用来传输文件。如同FTP协议的文件上传一样,PUT方法要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全隐患,因此一般的Web网站不使用该方法。

PUT /example.html HTTP/1.1
Host: www.pnotes.cn 
Content-Type: text/html
Content-Length: 1360

HEAD- 2.2.6 -

HEAD方法和GET方法一样,只是不返回报文主体部分。HEAD方法主要用于确认URI的有效性及资源更新的日期时间等。

HEAD /index.html HTTP/1.1
Host: www.pnotes.cn

DELETE- 2.2.7 -

DELETE方法用来删除文件,是与PUT方法相反的方法。DELETE方法与PUT方法一样不带验证机制,所以一般的Web网站同样不使用DELETE方法。

DELETE /example.html HTTP/1.1
Host: www.pnotes.cn

OPTIONS- 2.2.8 -

OPTIONS方法用来查询针对所请求URI指定的资源所支持的方法。

OPTIONS * HTTP/1.1
Host: www.pnotes.cn

TRACE- 2.2.9 -

TRACE方法是让Web服务器端将之前的请求通信环回返回给客户端的方法。客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的 HTTP 请求。TRACE 方法允许客户端在最终将请求发送给服务器时,看看它变成了什么样子。通过TRACE方法可以查询发送的请求是如何被加工修改/篡改的。

发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接收到请求的服务器端返回状态码200 OK的响应。

TRACE / HTTP/1.1
Host: www.pnotes.cn 
Max-Forwards: 2

因为TRACE方法容易引发XST(跨站追踪)攻击,通常不会使用。

CONNECT- 2.2.10 -

CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。

CONNECT proxy.pnotes.cn:8080 HTTP/1.1
Host: proxy.pnotes.cn