必备-5.http状态码及报文字段列表

必备-5.http状态码及报文字段列表

http状态值

状态值是判断请求的

  • 0:未初始化,尚未调用open()
  • 1:启动,已经调用open(),但尚未调用send()
  • 2:发送,已经调用send(),但尚未接收响应
  • 3:接收,已经接受大部分响应数据
  • 4:完成,已经接收到全部响应,而且已经可以在浏览器中使用了

http状态码

状态码分类(判断响应)

  • 1xx:信息响应类,【快递正在路上】,表示服务器端接受了请求并正在处理
  • 2xx:处理成功响应类,【快递送到了你手上】,表示操作被成功接收并处理
  • 3xx:重定向响应类,【快递送到了快递柜】,表示为了完成指定动作,必须接受进一步处理
  • 4xx:客户端错误,【客户地址的错误】,客户请求包含语法错误或者不能正确执行
  • 5xx:服务器端错误,【商家无能的错误】,服务器不能正确执行一个正确请求
状态码状态码英文名称中文描述
1xx2个响应处理类
100Continue继续客户端应继续请求
101Switching Protocols切换协议。(Websocket 握手)通过Upgrade 消息头通知客户端切换到指定版本的http协议,服务器端也会切换为这个指定的http协议。
2xx7个响应成功
200OK请求成功。一般用于GET与POST请求
201Created已创建。常出现在POST请求,后台已经创建了新的资源
202Accepted已接受。已经接受请求,但处理未完成
203Non-Authoritative Information非授权信息。请求成功。但获取的数据不是在你请求的服务器上得到的
204No Content空内容。服务器成功处理,但未返回内容。
205Reset Content重置内容。服务器处理成功,通知客户端重置文档视图。
206Partial Content部分内容。服务器成功处理了部分GET请求
3xx8个请求重定向:为了完成某个请求,必须接受进一步处理
300Multiple Choices多种选择。请求的资源存在于多个位置,可返回一个资源说明与地址列表供用户选择
301Moved Permanently**永久重定向**重定向到新URL,以后用新URL访问
302Found临时重定向,与301类似。可以继续使用原有URI,禁止 POST 变换成 GET
303See Other需要使用GET方法临时重定向。与302类似。但希望客户端使用GET方法请求
304Not Modified数据未修改。所请求的资源未修改,客户端可直接使用缓存
305Use Proxy需要使用代理服务器。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect是否使用POST方法临时重定向。与302类似。浏览器询问用户是否再次post
4xx18个客户端问题(客户端=你,服务器端=你女朋友)
400Bad Request请求的URI语法错误,服务器无法理解(给女朋友打电话,手机号里带英文
401Unauthorized无权访问:(女朋友把你拉黑了)
402Payment Required还没用,将来使用
403Forbidden拒绝响应:服务器接收到了请求,但是做响应(女朋友不想搭理你
404Not Found服务器根据请求的URI路径找不到资源(网页)。网站设计人员可设置"您所请求的资源无法找到"的个性页面(你女朋友从来没有过钱
405Method Not Allowed方法被禁用:(如GET、POST等)(女朋友只允许你给他寄东西,不允许你从她那拿东西)
406Not Acceptable无法生成响应体:请求的资源内容特性无法满足请求头中的条件,比如:客户端无法解析服务端返回的内容(你要MAC air,女朋友给你寄了个mac口红)
407Proxy Authentication Required需要代理身份的验证:(你托取货员到女朋友家取货,你女朋友得确认是不是你叫的那个取货员)
408Request Time-out请求超时:服务器等待客户端发送的请求时间过长(你不接你女朋友电话)
409Conflict处理请求的资源状态冲突。服务器完成客户端的 PUT 请求时可能返回此代码(女朋友来事,你给她买冰淇淋+西瓜+冰镇可乐)
410Gone请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置(你对象有过钱,但现在没有了
411Length Required服务器要求请求头中必须有Content-Length字段(女生找对象:必须先告诉身高)
412Precondition Failed客户端请求信息的前提条件错误:比如:当客户端的If-Unmodified-Since时间与服务器的last-modefied时间不一致时,则判断这个条件为false。(女生找对象的前提条件:有车有房,你都没有)
413Request Entity Too Large请求实体过大。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息(你跟你女朋友要五百万)
414Request-URI Too Large请求的URI过长。(URI通常为网址),服务器无法处理(你给你对象写了10万字的要求,你对象看都不看,烧了)
415Unsupported Media Type不支持的媒体类型你对象不想要照骗,想看真人,【网恋需谨慎】)
416Requested range not satisfiable无法满足请求范围,一般由断点续传时客户端发送的range字段,服务器找不到相应范围的数据。
417Expectation Failed无法满足期望的请求头信息,执行失败
5xx6个服务器端问题(客户端=你,服务器端=你女朋友)
500Internal Server Error服务器内部错误,无法完成请求(你女朋友手机坏了)
501Not Implemented服务器拒绝请求,无法完成请求(你女朋友把你拉黑了)
502Bad Gateway网关错误:代理服务器收到远程服务器无效响应【与服务器建立连接了】(你女朋友接电话了,但你听不到她跟你说话)
503Service Unavailable服务器超载或系统维护,无法响应。,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中(你女朋友在跟别人打电话
504Gateway Time-out网关超时:充当网关或代理的服务器,未及时获得远端服务器的响应【没与服务器建立连接】(你女朋友没接你电话)
505HTTP 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.0expireslast-modified来作为缓存判断的标准,http1.1引入了更多的缓存控制策略:cache-Controletag
    • 错误通知: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
  • 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 URLhttp://www.zhufengpeixun.cn/ —请求地址
Request MethodGET —请求的资源的方式。GET一般发送资源请求
Status Code200 OK —服务器返回的状态码
Remote Address123.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版本新增
ConnectionConnectionID 表示的就是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-RequestsHTTP Upgrade-Insecure-Requests 请求头向服务器发送一个客户端 对HTTPS加密和认证响应良好,并且可以成功处理的信号,可以请求所属网站所有的HTTPS资源。
User-Agent当前浏览器的版本信息客户端发送的请求头信息,服务器就可以通过这个请求头接收到信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值