彻底搞懂 HTTP 报文、报文信息以及 HTTP 状态码

一、HTTP 报文

用于HTTP协议交互的信息被称为HTTP报文,

HTTP 报文分为请求报文响应报文

请求报文:客户端发送请求时的 HTTP 请求报文;
响应报文:服务器响应客户端请求时发送的响应报文

二、HTTP 报文信息

HTTP 报文大致可分为报文首部报文主体两块,其中报文主体不是必须要有的;

报文首部:服务器或者客户端需要处理的请求或响应的属性和内容;
报文主体:请求或者响应时需要发送的数据

请求报文和响应报文的首部内容由以下数据组成

  • 请求行:包含用于请求的方法,请求URI和HTTP版本。
  • 状态行:包含表明响应结果的状态码,原因短语和HTTP版本。
  • 首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。
  • 其他:可能包含HTTP的RFC里未定义的首部(Cookie等)。

三、HTTP 状态码

HTTP 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。

借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。


响应的状态码可描述请求的处理结果

状态码的类别

数字中的第一位指定了响应类别,后两位无分类。响应类别有以下5种:


状态码分类
下面主要介绍一些常用的 HTTP 状态码:
  • 状态码 200 表示从客户端发来的请求在服务器端被正常处理了;

    在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如,
    使用GET方法时,对应请求资源的实体会作为响应返回;
    使用HEAD方法时,在响应中只返回首部,不会返回实体的主体部分;

  • 状态码 202 表示已经接受请求但未处理完成;
  • 状态码 204 表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分;

    也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新

  • 状态码 206 表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。
  • 状态码 300 表示请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端;
  • 状态码 301 表示请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替;

    当指定资源路径的最后忘记添加斜杠“/”,就会产生301状态码。
    http://baidu.com/search

  • 状态码 302 表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问;

    和 301 状态码相似,但 302 状态码代表的资源不是被永久移动,只是临时性质的。
    http://baidu.com/search/

  • 状态码 303 表示由于请求对应的资源存在着另一个URI,应使用 GET 方法定向获取请求的资源;

    303 状态码和 302 状态码有着相同的功能,但 303 状态码明确表示客户端应当采用 GET 方法获取资源,这点与302状态码有区别

  • 状态码 304 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回 304 Not Modified;

    304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。

  • 状态码 400 表示客户端请求的语法错误,服务器无法理解;
  • 状态码 401 表示请求要求需要有通过 HTTP 认证的认证信息,如果之前已进行过1次请求,则表示用户认证失败;
  • 状态码 403 表示服务器理解请求客户端的请求,但是拒绝执行此请求;

    服务器端没有必要给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了

  • 状态码 404 NotFound表示服务器无法根据客户端的请求找到相应的资源;
  • 状态码 408 表示服务器等待客户端发送的请求时间过长,超时;
  • 状态码 500 表示服务器执行请求时内部发生错误,无法完成该请求;
  • 状态码 503 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

状态码和状况的不一致不少返回的状态码响应是错误的,但是用户可能察觉不到这点。比如Web应用程序内部发生错误(此时应该返回状态码 500),状态码依然返回200 OK,这种情况也经常遇到。

-- 以上主要图文来源《图解 HTTP》

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容