必备-5.http状态码及报文字段列表
http状态值
状态值是判断请求的
- 0:未初始化,尚未调用open()
- 1:启动,已经调用open(),但尚未调用send()
- 2:发送,已经调用send(),但尚未接收响应
- 3:接收,已经接受大部分响应数据
- 4:完成,已经接收到全部响应,而且已经可以在浏览器中使用了
http状态码
状态码分类(判断响应)
- 1xx:信息响应类,【快递正在路上】,表示服务器端接受了请求并正在处理
- 2xx:处理成功响应类,【快递送到了你手上】,表示操作被成功接收并处理
- 3xx:重定向响应类,【快递送到了快递柜】,表示为了完成指定动作,必须接受进一步处理
- 4xx:客户端错误,【客户地址的错误】,客户请求包含语法错误或者不能正确执行
- 5xx:服务器端错误,【商家无能的错误】,服务器不能正确执行一个正确请求
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
1xx | 2个 | 响应处理类 |
100 | Continue | 继续。客户端应继续请求 |
101 | Switching Protocols | 切换协议。(Websocket 握手 )通过Upgrade 消息头通知客户端切换到指定版本的http协议,服务器端也会切换为这个指定的http协议。 |
2xx | 7个 | 响应成功 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。常出现在POST请求,后台已经创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但处理未完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但获取的数据不是在你请求的服务器上得到的 |
204 | No Content | 空内容。服务器成功处理,但未返回内容。 |
205 | Reset Content | 重置内容。服务器处理成功,通知客户端重置文档视图。 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
3xx | 8个 | 请求重定向:为了完成某个请求,必须接受进一步处理 |
300 | Multiple Choices | 多种选择。请求的资源存在于多个位置,可返回一个资源说明与地址列表供用户选择 |
301 | Moved Permanently | **永久重定向**重定向到新URL,以后用新URL访问 |
302 | Found | 临时重定向,与301类似。可以继续使用原有URI,禁止 POST 变换成 GET |
303 | See Other | 需要使用GET方法临时重定向。与302类似。但希望客户端使用GET方法请求 |
304 | Not Modified | 数据未修改。所请求的资源未修改,客户端可直接使用缓存 |
305 | Use Proxy | 需要使用代理服务器。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 是否使用POST方法临时重定向。与302类似。浏览器询问用户是否再次post |
4xx | 18个 | 客户端问题(客户端=你,服务器端=你女朋友) |
400 | Bad Request | 请求的URI语法错误,服务器无法理解(给女朋友打电话,手机号里带英文) |
401 | Unauthorized | 无权访问:(女朋友把你拉黑了) |
402 | Payment Required | 还没用,将来使用 |
403 | Forbidden | 拒绝响应:服务器接收到了请求,但是做响应(女朋友不想搭理你) |
404 | Not Found | 服务器根据请求的URI路径找不到资源(网页)。网站设计人员可设置"您所请求的资源无法找到"的个性页面(你女朋友从来没有过钱) |
405 | Method Not Allowed | 方法被禁用:(如GET、POST等)(女朋友只允许你给他寄东西,不允许你从她那拿东西) |
406 | Not Acceptable | 无法生成响应体:请求的资源内容特性无法满足请求头中的条件,比如:客户端无法解析服务端返回的内容(你要MAC air,女朋友给你寄了个mac口红) |
407 | Proxy Authentication Required | 需要代理身份的验证:(你托取货员到女朋友家取货,你女朋友得确认是不是你叫的那个取货员) |
408 | Request Time-out | 请求超时:服务器等待客户端发送的请求时间过长(你不接你女朋友电话) |
409 | Conflict | 处理请求的资源状态冲突。服务器完成客户端的 PUT 请求时可能返回此代码(女朋友来事,你给她买冰淇淋+西瓜+冰镇可乐) |
410 | Gone | 请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置(你对象有过钱,但现在没有了) |
411 | Length Required | 服务器要求请求头中必须有Content-Length字段(女生找对象:必须先告诉身高) |
412 | Precondition Failed | 客户端请求信息的前提条件错误:比如:当客户端的If-Unmodified-Since时间与服务器的last-modefied时间不一致时,则判断这个条件为false。(女生找对象的前提条件:有车有房,你都没有) |
413 | Request Entity Too Large | 请求实体过大。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息(你跟你女朋友要五百万) |
414 | Request-URI Too Large | 请求的URI过长。(URI通常为网址),服务器无法处理(你给你对象写了10万字的要求,你对象看都不看,烧了) |
415 | Unsupported Media Type | 不支持的媒体类型(你对象不想要照骗,想看真人,【网恋需谨慎】) |
416 | Requested range not satisfiable | 无法满足请求范围,一般由断点续传时客户端发送的range字段,服务器找不到相应范围的数据。 |
417 | Expectation Failed | 无法满足期望的请求头信息,执行失败 |
5xx | 6个 | 服务器端问题(客户端=你,服务器端=你女朋友) |
500 | Internal Server Error | 服务器内部错误,无法完成请求(你女朋友手机坏了) |
501 | Not Implemented | 服务器拒绝请求,无法完成请求(你女朋友把你拉黑了) |
502 | Bad Gateway | 网关错误:代理服务器收到远程服务器无效响应【与服务器建立连接了】(你女朋友接电话了,但你听不到她跟你说话) |
503 | Service Unavailable | 服务器超载或系统维护,无法响应。,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中(你女朋友在跟别人打电话) |
504 | Gateway Time-out | 网关超时:充当网关或代理的服务器,未及时获得远端服务器的响应【没与服务器建立连接】(你女朋友没接你电话) |
505 | HTTP Version not supported | 请求的http版本不支持(你用qq给你女朋友的手机号打电话) |
1.http1.0、http1.1、http1.2三个版本发布时间?
- 1991年http0.9发布
- 1996年http1.0发布
- 1999年http1.1发布
- 2015年http2.0发布
- http1.1和http2.0之间,经历了16年之久,有些时间久远的网站无法实现http1.1到http2.0的版本跨越,所以现在还在用1.1
2.http1.0、http1.1、http1.2三个版本区别?
-
http1.0和http1.1对比
- 缓存处理:http1.0用
expires
和last-modified
来作为缓存判断的标准,http1.1引入了更多的缓存控制策略:cache-Control
、etag
- 错误通知:http1.1新增了24个错误状态响应码,如
- 409:Conflict,处理请求资源时冲突
- 410:Gone,表示服务器上的某个资源被永久性删除了
- 长连接:HTTP1.1中默认开启Connecton:keep-alive,一定程度弥补了HTTP1.0每次请求都要创建连接的缺点。
- 带宽优化:http1.1支持断点续传,即返回码是
206(Partial Content
) - 虚拟机Host头处理:
- 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL不存在主机名(
hostname
)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers
),并且它们共享一个IP地址。 - HTTP1.1的请求消息和响应消息都支持Host头域,请求消息中如果没有Host头域,会报一个错(
400 Bad Request
)
- 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL不存在主机名(
- 缓存处理:http1.0用
-
http2.0和http1.x对比
-
header压缩:
HTTP1.x
:的header带有大量信息,而且每次都重复发送。HTTP2.0
: 使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小
-
服务端推送(server push):
-
http1.x
:向服务器请求啥文件,服务器就给啥 -
http2.0:
例如我的网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了-
// 通过在应用生成HTTP响应头信息中设置Link命令 Link: </styles.css>; rel=preload; as=style, </example.png>; rel=preload; as=image
-
-
-
二进制格式传输(Binary Format):
HTTP1.x
:的解析是基于【文本】,基于文本的格式解析存在天然限制,要想做到健壮性需要考虑多个场景HTTP2.0
:的解析时基于【二进制】,只认0和1的组合,不需要考虑传输文件的格式,健壮性强
-
多路复用(MultiPlexing):
-
HTTP/1.0
:[用完就关]每次请求响应,建立一个TCP连接,用完关闭 -
HTTP/1.1
:「长连接」 若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞; -
HTTP/2.0
:「多路复用」一个连接上开启多个请求,某个请求任务耗时严重,不会影响到其它连接的正常执行;
-
-
3…http1.0、http1.1、http1.2三个版本区别?
http1.0与1.1
- 缓存处理
- 错误通知
- 长连接
- 带宽优化
- host头处理
http1.1与2.0
- header压缩
- 服务器端推送
- 二进制传输
- 多路复用
报文头字段
字段名 | 说明 |
---|---|
General(通用报文) | 可以理解为是基本信息,4个 |
Request URL | http://www.zhufengpeixun.cn/ —请求地址 |
Request Method | GET —请求的资源的方式。GET一般发送资源请求 |
Status Code | 200 OK —服务器返回的状态码 |
Remote Address | 123.57.205.204:80 —服务器的外网IP以及我请求的端口号 |
Response Headers | (响应头),10个 |
HTTP版本号 | 响应起始行 |
Date | 服务器时间 |
Server | 服务器端通过什么工具创建的web服务【Apache/nignx】。 |
Connection | 是否长连接==(keep-alive==) |
Keep-Alive | 保持chang链接的时间 |
set-Cookie | 将服务器处理生成的connect.sid放到响应头中带回去,客户端可以根据这个生成cookie缓存 |
ETag | 是否设置协商缓存,以及缓存的周期 http1.1 |
Last-Modified | 是否设置协商缓存,以及缓存的周期 http1.0 |
Cache-Control | 是否设置强缓存,以及缓存的周期,http1.1 |
Expires | 是否设置强缓存,以及缓存的周期,http1.0,一般是一个日期格式,他就是过期日期 |
Request Headers | (请求头),12个 |
Accept | 方式 |
Accept-Encoding | 编码格式 |
Accept-Language | 语言 |
Cache-Control | 强缓存,HTTP1.1版本新增 |
Connection | ConnectionID 表示的就是TCP建立连接的ID,google可以提供最多6个TCP连接。 |
Cookie | 把本地的Cookie带给服务器,Cookid(网络饼干,储存在用户本地终端上的数据) |
Content-Type | 传参给服务器内容的类型。 |
Host | 虚拟主机名,http1.1提出的Host头域优化 |
if-Modified-Since | 设置协商缓存后,请求头返回这个信息和服务器作对比,资源是否相同,http1.1 |
if-None-Match | 设置协商缓存后,请求头返回这个信息和服务器作对比,资源是否相同,http1.0 |
Upgrade-Insecure-Requests | HTTP Upgrade-Insecure-Requests 请求头向服务器发送一个客户端 对HTTPS加密和认证响应良好,并且可以成功处理的信号,可以请求所属网站所有的HTTPS资源。 |
User-Agent | 当前浏览器的版本信息客户端发送的请求头信息,服务器就可以通过这个请求头接收到信息 |