http的发展历史
http的发展历史
- http/0.9
- 只有一个get方法,服务器发送完数据就关闭TCP连接;
- HTTP/0.9 的响应内容并不包含HTTP头,这意味着只有HTML件可以传送,无法传输其他类型的文件;
- 没有状态码或错误代码
- 请求方法:GET
- http/1.0
- 状态码在响应开始时发送,使浏览器能够快速了解请求的状态并能做出一些调整
- 引入了HTTP请求头的概念。
- 在新HTTP头(Content-Type头)的帮助下,具备了传输非HTML文档的能力
- 增加了协议版本信息
- 1.0支持GET、POST、HEAD
1 | // e.g. |
1 | 200 OK |
- http/1.1
- 第一个http标准化版本,可以使用Host请求头,使同一个IP可以配置多个域名
- 持久链接(keep-alive)
- 增加了pipeline,HTTP的请求队列是一个先进先出的队列。客户端的请求是一个接一个的,上一个请求没收到回应时就继续等待,收到回应后再发送下一个请求。这样服务器有大部分时间处于空闲状态。1.1版本的http协议将这个队列放在了服务器,客户端可以不断地发送请求,服务器将这些请求整理在一个队列中,一个一个进行处理。
- 可以同时打开多个TCP连接。
- http/2.0
- 二进制分帧层
- 多路复用
- 首部压缩
- 服务器推送
- GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT
请求方法
GET: 请求显示指定路径的资源,一般只用来数据的读取;
POST: 向指定资源提交数据,并请求服务器进行处理,例如表单的提交等;
HEAD: 与GET方法一样,但是只返回响应头信息,常用来测试服务器的性能;
PUT: 向服务器指定路径上传最新资源,是幂等的方法。通过该方法,客户端可以上传最新内容;
DELETE: 向服务器请求删除指定URI的资源,是幂等的;
CONNECT: 该方法是HTTP/1.1预留方法,能够连接改为管道方式的代理服务器,常用于SSL加密的加密服务器或者非加密HTTP代理服务器
OPTIONS: 该方法向服务器请求返回所有支持的HTTP请求方法,也用来测试服务器性能
TRACE: 该方法请求服务器返回请求的内容,用于HTTP的诊断或测试
PATCH: PATCH方法与PUT方法一样,用来更新服务器的资源。区别是:
1、PATCH方法只是部分更新,PUT方法是全部更新。
2、PATCH方法指定的服务器路径不存在时会创建一个,PUT不会幂等:对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。
http状态码
- 1xx 服务器收到请求,请求者需要继续操作
100 继续请求
101 服务器根据客户端的要求,切换更高级的协议 - 2xx 请求成功,服务器正在处理或成功处理
200 请求成功
201 已创建,成功请求并创建了新的资源
202 已接受,但处理未完成
204 无内容,服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 - 3xx 重定向,需要进一步操作,以完成请求
300 请求的资源有多个地址,需要客户端自己选择
301 请求的资源已被永久移动到新地址,返回新地址,浏览器自动解析新的url
302 临时重定向
304 请求的内容未修改。客户端通常会缓存访问过的资源,通过一个头信息指出希望只返回指定日期之后修改的资源
头信息:Last-Modified: Wed, 18 Jun 2018 14:22:27 GMT
Cache-Control: max-age=600
Expires: Wed, 18 Jun 2018 14:48:39 GMT
Date: Wed, 18 Jun 2018 14:48:39 GMT
浏览器第一次请求某一个url时,服务端返回的状态是200,同时有个Last-Modified标记文件在服务端最后的修改时间,第二次请求时,浏览器会向服务器传送If-Modified-Since报头,询问是否更改过,如果没有更改就返回304 - 4xx 客户端错误,请求包含语法错误或无法完成请求
400 客户端请求的语法错误,服务器无法解析
401 请求用户身份验证
403 服务器拒绝客户端的请求
404 请求资源路径错误,服务器无法找到该资源
405 客户端请求的方法被禁止
407 请求代理身份验证
408 服务器等待客户端时间过长,请求超时
410 服务器以前有这个资源,但是现在没有了
416 客户端请求的范围无效
- 5xx 服务器错误,服务器在处理请求的过程中发生了错误
500 服务器内部错误,无法完成请求
501 服务器不支持请求的功能
502 无效响应
503 Service Unavailable 由于服务器超载或者系统维护,服务器暂时无法响应请求
505 服务器不支持请求的协议版本,无法完成请求