HTTP 知识量:10 - 42 - 186
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
向请求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方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。
GET /index.html HTTP/1.1 Host: www.pnotes.cn
POST方法用来传输实体的主体。虽然GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是使用POST方法。
POST /submit.cgi HTTP/1.1 Host: www.pnotes.cn Content-Length: 1230
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方法和GET方法一样,只是不返回报文主体部分。HEAD方法主要用于确认URI的有效性及资源更新的日期时间等。
HEAD /index.html HTTP/1.1 Host: www.pnotes.cn
DELETE方法用来删除文件,是与PUT方法相反的方法。DELETE方法与PUT方法一样不带验证机制,所以一般的Web网站同样不使用DELETE方法。
DELETE /example.html HTTP/1.1 Host: www.pnotes.cn
OPTIONS方法用来查询针对所请求URI指定的资源所支持的方法。
OPTIONS * HTTP/1.1 Host: www.pnotes.cn
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方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。
CONNECT proxy.pnotes.cn:8080 HTTP/1.1 Host: proxy.pnotes.cn
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6