1. HTTP协议用于客户端和服务器端之间的通信
规定:请求从客户端发出,服务器端响应请求,即客户端开始建立通信,报文格式如下
(1)请求报文格式;请求方法+请求URI+协议版本+可选的请求首部字段+内容实体
(2)响应报文格式:协议版本+状态吗+解释状态码的原因短语+可选的响应首部字段以及实体主体
2. HTTP是不保存状态的协议
(1)无状态协议,即不做持久化处理,之前的访问信息不予记录,每一次都是新的请求,后为了保持状态引入了cookie技
术。
(2)HTTP请求URI定位资源,如果不是访问特定资源而是对服务器本身发起请求,可以使用*代替URI
3. 告知服务器意图的HTTP方法
(1)GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。如果请求资源是文本,原样返回;如果是CGI,返回执行后的结果
(2)POST:用来传输实体的主体(get也可以但一般不用),主要目的并不是获取响应的主体内容,当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;
(3)PUT:传输文件,类似FTP,由于任何人都可上传,存在安全性问题,一般不用
(4)HEAD:与get一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期和时间等
(5)DELETE:删除文件,与PUT相反的方法,请求URI删除指定的资源,不带验证机制,一般不用需配合使用
(6)OPTIONS:询问支持的方法,用来查询针对请求URI指定的资源支持的方法
(7)TRACE;追踪路径,让web服务器将之前的请求通信返回给客户端的方法,200 ok等,不常用,易引发XST攻击
(8)CONNECT:要求用隧道协议连接代理,与代理服务器通信时建立隧道,主要使用SSL和TLS协议把内容加密后隧道传输
4. 使用方法下达命令
(1)支持的方法列表
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 实体中包含一个表,表中说明与该URI所表示的原内容的区别。 |
10 | MOVE | 请求服务器将指定的页面移至另一个网络地址 |
11 | COPY | 请求服务器将指定的页面拷贝至另一个网络地址。 |
12 | LINK | 请求服务器建立链接关系。 |
13 | UNLINK | 断开链接关系。 |
14 | WRAPPED | 允许客户端发送经过封装的请求。 |
15 | Extension-mothed | 在不改动协议的前提下,可增加另外的方法。 |
5. 持久连接节省通信量
(1)HTTP初始版本,连接一次要断开一次,麻烦,后来就改成不是每次的请求都造成无谓的TCP建立连接和断开这些开销
(2)管线化:持久连接使得多数请求以管线化方式发送成为可能,即同时发送多个请求
6. 使用cookie的状态管理
(1)不用每次跳转页面重新登录,在请求和响应报文中写入cookie信息控制客户端状态,请求报文(没有cookie信息的状态)---响应报文(服务器端生成cookie信息)---请求报文(自动发送保存着的cookie信息)