响应行

响应行/状态行(status line):意思是服务器响应的状态。

响应报文里的起始行。

也由三部分组成

  1. 版本号:表示报文使用的 HTTP 协议版本,通常是 HTTP/1.1
  2. 状态码:一个三位数,用代码的形式表示处理的结果,比如 200 是成功,500 是服务器错误;
  3. 原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因。

Wireshark 抓包案例:

HTTP/1.1 200 OK

响应状态码

响应码规范:RFC6585 (2012.4)、RFC7231 (2014.6)

状态码是一个十进制数字,代表服务器对请求的处理结果。

“状态码”而不是“错误码”。也就是说,它的含义不仅是错误,更重要的意义在于表达 HTTP 数据处理的“状态

目前 RFC 标准里规定的状态码是三位数,所以取值范围就是从 000 到 999。目前 RFC 标准里总共有 41 个状态码,但状态码的定义是开放的,允许自行扩展。

RFC 标准把状态码分成了五类,用数字的第一位表示分类,而 0~99 不用,这样状态码的实际可用范围就大大缩小了,由 000~999 变成了 100~599。

这五类的具体含义是:

  • 1××:请求已接收到,需要进一步处理才能完成,HTTP1.0 不支持

    • 100 Continue:上传大文件前使用,由客户端发起请求中携带 Expect: 100-continue 头部触发

    • 101 Switch Protocols:协议升级使用,由客户端发起请求中携带 Upgrade: 头部触发,如升级 websocket 或者 http/2.0

    • 102 Processing:WebDAV 请求可能包含许多涉及文件操作的子请求,需要很长时间才能完成请求。该代码表示 服务器已经收到并正在处理请求,但无响应可用。这样可以防止客户端超时,并假设请求丢失

  • 2××:报文已经收到并成功处理请求

    • 200 OK:是最常见的成功状态码,表示成功返回响应。

    • 201 Created: 有新资源在服务器端被成功创建

    • 202 Accepted: 服务器接收并开始处理请求,但请求未处理完成。这样一个模糊的概念是有意如此设计,可以覆盖更多的场景。例如异步、需要长时间处理的任务。

    • 203 Non-Authoritative Information:当代理服务器修改了 origin server 的原始响应包体时(例如更换了HTML中的元素值),代理服务器可以通过修改
      200为203的方式告知客户端这一事实,方便客户端为这一行为作出相应的处理。203响应可以被缓存。

    • 204 No Content:含义与“200 OK”基本相同,成功执行了请求且不携带响应包体,并暗示客户端无需更新当前的页面视图

    • 205 Reset Content:成功执行了请求且不携带响应包体,同时指明客户端需要更新当前页面视图。

    • 206 Partial Content:是 HTTP 分块下载或断点续传的基础,在客户端发送“范围请求”、要求获取资源的部分数据时出现,它与 200 一样,也是服务器成功处理了请求,但 body 里的数据不是资源的全部,而是其中的一部分。状态码 206 通常还会伴随着头字段“Content-Range”,表示响应报文里 body 数据的具体范围,供客户端确认,例如“Content-Range: bytes 0-99/2000”,意思是此次获取的是总计 2000 个字节的前 100 个字节。

    • 207 Multi-Status:RFC4918 ,在 WEBDAV 协议中以 XML 返回多个资源的状态。

    • 208 Already Reported:RFC5842 ,为避免相同集合下资源在207响应码下重复上报,使用 208 可以使用父集合的响应码。

  • 3××:重定向,资源位置发生变动,需要客户端重新发送请求;重定向使用 Location 指向的资源或者缓存中的资源。在 RFC2068
    中规定客户端重定向次数不应超过 5 次,以防止死循环。

    • 300 Multiple Choices:资源有多种表述,通过 300 返回给客户端后由其自行选择访问哪一种表述。由于缺乏明确的细节,300 很少使用。
    • 301 Moved Permanently:俗称“永久重定向”,此次请求的资源已经不存在了,需要改用新的 URI 再次访问。资源永久性的重定向到另一个 URI 中。
    • 302 Found:俗称“临时重定向”(Moved Temporarily)资源临时的重定向到另一个 URI 中。
    • 303 See Other:重定向到其他资源,常用于 POST/PUT 等方法的响应中。
    • 304 Not Modified: 用于 If-Modified-Since 等条件请求,表示资源未修改,用于缓存控制。当客户端拥有可能过期的缓存时,会携带缓存的标识
      etag、时间等信息询问服务器缓存是否仍可复用,而304是告诉客户端可以
      复用缓存。
    • 307 Temporary Redirect:类似302,但明确重定向后请求方法必须与原请求方法相同,不得改变。
    • 308 Permanent Redirect:类似301,但明确重定向后请求方法必须与原请求方法相同,不得改变。
  • 4××:客户端错误,请求报文有误,服务器无法处理;

    • 400 Bad Request:服务器认为客户端出现了错误,但不能明确判断为以下哪种错误时使用此错误码。例如HTTP请求格式错误。
    • 401 Unauthorized:用户认证信息缺失或者不正确,导致服务器无法处理请求。
    • 407 Proxy Authentication Required:对需要经由代理的请求,认证信息未通过代理服务器的验证
    • 403 Forbidden:服务器理解请求的含义,但没有权限执行此请求
    • 404 Not Found:服务器没有找到对应的资源
    • 410 Gone:服务器没有找到对应的资源,且明确的知道该位置永久性找不到该资源
    • 405 Method Not Allowed:服务器不支持请求行中的 method 方法
    • 406 Not Acceptable:对客户端指定的资源表述不存在(例如对语言或者编码有要求),服务器返回表述列表供客户端选择。
    • 408 Request Timeout:服务器接收请求超时
    • 409 Conflict:资源冲突,例如上传文件时目标位置已经存在版本更新的资源
    • 411 Length Required:如果请求含有包体且未携带 Content-Length 头部,且不属于chunk类请求时,返回 411
    • 412 Precondition Failed:复用缓存时传递的 If-Unmodified-Since 或 If-None-Match 头部不被满足
    • 413 Payload Too Large/Request Entity Too Large:请求的包体超出服务器能处理的最大长度
    • 414 URI Too Long:请求的 URI 超出服务器能接受的最大长度
    • 415 Unsupported Media Type:上传的文件类型不被服务器支持
    • 416 Range Not Satisfiable:无法提供 Range 请求中指定的那段包体
    • 417 Expectation Failed:对于 Expect 请求头部期待的情况无法满足时的响应码
    • 421 Misdirected Request:服务器认为这个请求不该发给它,因为它没有能力处理。
    • 426 Upgrade Required:服务器拒绝基于当前 HTTP 协议提供服务,通过Upgrade 头部告知客户端必须升级协议才能继续处理。
    • 428 Precondition Required:用户请求中缺失了条件类头部,例如 If-Match
    • 429 Too Many Requests:客户端发送请求的速率过快,(一般不会返回429,而返回503)
    • 431 Request Header Fields Too Large:请求的 HEADER 头部大小超过限制
    • 451 Unavailable For Legal Reasons:RFC7725 ,由于法律原因资源不可访问
  • 5××:服务器错误,服务器在处理请求时内部发生了错误。

    • 500 Internal Server Error:服务器内部错误,且不属于以下错误类型
    • 501 Not Implemented:服务器不支持实现请求所需要的功能
    • 501 Not Implemented:服务器不支持实现请求所需要的功能
    • 503 Service Unavailable:服务器资源尚未准备好处理当前请求
    • 504 Gateway Timeout:代理服务器无法及时的从上游获得响应
    • 505 HTTP Version Not Supported:请求使用的 HTTP 协议版本不支持
    • 507 Insufficient Storage:服务器没有足够的空间处理请求
    • 508 Loop Detected:访问资源时检测到循环
    • 511 Network Authentication Required:代理服务器发现客户端需要进行身份验证才能获得网络访问权限

其中1xx、2xx、3xx 为成功响应吗,4xx、5xx 为失败响应码。

此外当客户端接受到它不认识的响应码时,将按照该响应吗所在系列的第一个响应码(x00)来处理

如客户端收到:577 将会以 500 来处理,其他类似

参考链接:

  • 极客时间:透视HTTP
  • 极客时间:Web协议详解与抓包实战

HTTP 响应行及响应状态码相关推荐

  1. 手动去设置HTTP响应行、响应头、响应体

    ①手动去设置HTTP响应行中的状态码,这里用到了response的setStatus(int sc);这个方法 package com.itheima.line;import java.io.IOEx ...

  2. Android中使用logger打印完整的okhttp网络请求和响应的所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)

    如果你的项目中的网络请求库是Retrofit的话,他的底层封装的是OkHttp,通常调试网络接口时都会将网络请求和响应相关数据通过日志的形式打印出来.OkHttp也提供了一个网络拦截器okhttp-l ...

  3. HTTP 响应的格式及状态码

    HTTP响应 服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应. 响应数据格式 HTTP响应由三部分组成:状态行.响应头 ...

  4. 通俗易懂。HTTP请求行、请求头、请求体、响应行、响应头、响应体详解

    一. HTTP请求报文解剖 HTTP Request :HTTP请求 Request Line:请求行 Header:请求头 Request Body:请求体 HTTP请求报文由3部分组成(请求行+请 ...

  5. PDA服务器显示响应为空,jmeter 状态码为200,但是响应数据为何为空

    @Wei_s: 意思就是说服务器就只写了200,没写body. 比如你想要的是A(http response包): HTTP/1.1 200 OK Cache-Control: private Con ...

  6. WEB阶段3:Response响应组成常见状态码ServletContexturl编码文件下载案例

    Response响应组成&常见状态码&ServletContext&url编码&文件下载案例 回顾 请求有哪三个的组成部分 请求行:提交方式 URI HTTP/1.1 ...

  7. HTTP协议方法及状态码(HTTP协议入门必备)

    目录 基本概念 使用telnet演示HEAD方法 使用telnet演示TRACE方法 使用telnet演示OPTIONS方法 HTTP响应中的状态码 304响应演示 使用telnet演示304响应 基 ...

  8. http状态码 以及请求响应头相关

    1xx消息[编辑] 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非 ...

  9. http协议,http状态码,请求,响应

    http 简介 http 是一种超文本传输协议(Hyper Text Transfer Protocol), 可以用来在络中把服务器消息传输到我们的浏览器中.并且Http 协议是一个基于 TCP/IP ...

最新文章

  1. 2021年春季学期-信号与系统-第十次作业参考答案-第六小题
  2. HashMap和HashSet的区别
  3. postgresql数据库的数据导出
  4. java的垃圾回收机制包括:主流回收算法和收集器(jvm的一个主要优化方向)
  5. PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
  6. Web Components 系列(十)—— 实现 MyCard 的基本布局
  7. Ubuntu下对executable (application/x-executable)文件创建快捷方式
  8. 完整的【ArcGIS地理信息系统空间分析实验教程】(包括光盘数据)
  9. Linux线程优先级设置
  10. SpringBoot调用腾讯云短信服务
  11. 矩阵的内积和外积,三向量混合积
  12. jpg格式的图片怎么压缩呢?手把手教你快速压缩jpg图片的大小
  13. LCS(最大公共子序列)问题
  14. 【ZYNQ】从入门到秃头01 初识ZYNQ(PS和PL之间连接)
  15. 用代码写个烟花之基础版
  16. 错误Could not locate executable null\bin\winutils.exe in the Hadoop binaries的解决方案
  17. 1年赋能100家环保机构,阿里云发布“青山绿水”计划
  18. 百度账号找回服务器,百度网盘秒删的资源,用这工具一键找回
  19. MapX.h和MapX.cpp下载
  20. [易飞]客供料处理方案

热门文章

  1. 202.m1-App的界面的实现
  2. Stripe完善账户与使用(重点)
  3. VC++ 操作Word
  4. 互联网时代各行业都在快速更替,对于金融行业即将成为下一个风口的分析
  5. 临时表空间不足ORA-01652: unable to extend temp segment by 64 in tablespace
  6. 1011:2.4将磅转换为千克
  7. 2006年100首好歌
  8. 10、Hibernate的对象检索策略
  9. 运行易语言必须放在c盘才能打开,易语言怎样写隐藏运行图片里的文件
  10. 基于VGG的猫狗识别