本文是《HTTP权威指南》的读书笔记

HTTP报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求或一条来自服务器的响应。它们由三部分组成:

  • 对报文进行描述的起始行(start line);
  • 包含属性的首部块(head);
  • 可选的,包含数据的主体(body)部分;

请求报文的格式与响应报文的格式稍有不同:

  • 请求报文的格式为:
<method><request-URL><version>
<headers>
<entity-body>
  • 响应报文的格式为:
<version><status><reason-phrase>
<headers>
<entity-body>

报文各部分的简要描述:

  • method,客户端希望服务器对资源执行的动作,如GET,HEAD,POST等;
  • requset-URL,命名所请求的资源;
  • version,报文所使用的HTTP的版本;
  • status,状态码,用三位数字描述请求过程中所发生的情况,如200,表示请求成功;
  • reasuon-phrase,前面状态码的可读短语;
  • headers,首部,可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF;
  • entity-body,主体部分,包含一个由任意数据组成的数据块;

常用的HTTP方法:

方法 描述 是否包含主体
GET 从服务器获取信息
HEAD 只从服务器获取信息的首部
POST 向服务器发送需要处理的数据
TRACE 对可能经过代理服务器传到服务器上去的报文进行追踪
PUT 将请求的主体存储在服务器上
OPTIONS 决定可以在服务器上执行哪些方法
DELETE 从服务器上删除一份文档

HTTP定义了一组称为安全方法的方法:GET和HEAD,因为这两个方法都不会在服务器上产生什么结果(不会对服务器上的资源进行更改,删除等);TRACE方法允许客户端在最终将请求发送给服务器时,看看它变成什么样子了(发起一个请求时,这个请求可能会经过一系列的中间节点,如代理,防火墙等,每个中间节点都可能会修改原始的HTTP请求;)

状态码用来描述请求过程发生的情况,状态码的分类:

整体范围 已定义范围 分类
100~199 100~101 信息提示
200~299 200~206 成功
300~399 300~305 重定向
400~499 400~415 客户端错误
500~599 500~505 服务器错误

最常见的状态码:

状态码 原因短语 含义
200 OK 成功,请求的所有数据都在响应主体中
401 Unauthorized(未授权) 需要输入用户名和密码
404 Not Found(没有找到) 服务器无法找到请求URL所对应的资源

状态码的详细信息:

1. 100~199信息状态码
状态码 原因短语 含义
100 Continue 收到请求的初始部分,请客户端继续
101 Switching Protocols 服务器将根据客户端的指定,将协议切换为Update首部所列的协议

对于100状态码的使用,如果客户端想向服务器发送一个实体,但不知道服务器是否可以接受,则可以发送带有100状态码的请求,服务器收到这个状态杩的请求后,根据自己的情况,对这个请求进行响应;

2. 200~299 成功状态码
状态码 原因短语 含义
200 OK 请求成功,所有数据都在响应主体中
201 Created 用于创建服务器对象的请求,服务器必须在发送这个状态码之前创建好对象
202 Accepted 请求已接受,但服务器还未对其执行任何动作
203 Non-Authoriative 实体首部所包含信息不是来自源端服务器,是资源的一个副本
204 No Content 响应报文中没有主体的实体部分,只有首部与状态行;
205 Reset Content 让浏览器清除当前页面的所有HTML表单元素
206 Parial Content 成功执行了一个部分请求
3. 300~399 重定向状态码
状态码 原因短语 含义
300 Multiple Choice 客户端请求一个实际指向多个资源的URL时返回这个状态码,让用户进行选择
301 Moved Permanently 在请求的URL已被移除时使用,响应的首部会包含资源现在所处的URL
302 Found 与301类似,使用首部给出的URL来临时定位资源,但将来的请求仍使用老的URL
304 Not Modified 带这个状态码的响应不会包含实体的主体部分
305 Used Proxy 说明必须通过代理来访问资源,代理位置由Location首部给出
307 Temporaty Redirect 与302类似
4.400-499 客户端错误状态码
状态码 原因短语 含义
400 Bad Request 发送了一个错误的请求
401 Unauthorized 在得到资源前,需要对客户端的身份进行验证
402 Payment Required 保留,还未使用
403 Forbidden 请求被拒绝
404 Not Found 请求的资源没有找到
405 Method Not Allowed 使用不被允许的方法对资源进行访问,响应的Allows首部会包含可以使用的方法
406 Not Acceptable 客户端指定参数说明它们可以接收什么类型的实体,服务器没有客户端所希望的类型的资源时,返回该状态码
407 Proxy Authentication Required 与401类似,用于要求对资源认证的代理服务器
408 Request Timeout 请求超时
409 Conflict 请求可能会在资源上引发冲突,响应中会包含描述冲突的主体
410 Gone 与404类似,但服务器曾经存在该资源
411 Length Required 服务器要求请求报文中包含Content-Length首部时使用
412 Proconditin Failed 客户端发起条件请求,但其中一个条件失败了
413 Request Entity Too Large 客户端发送的实体比服务器希望处理的要大
414 Request URI Too Long 请求URI过长
415 Unsupported Media Type 服务器无法支持客户端所发实体的内容类型
416 Request Range Not Satisfiable 请求的范围无效或无法满足
417 Expectation Failed 服务器无法满足请求报文中Except首部中的期望
5.500~599 服务器错误状态码
状态码 原因短语 含义
500 Internal Server Error 服务器遇到一个妨碍它为请求提供服务的错错误
501 Not Implemented 请求超出服务器的能力范围(如,使用了服务器不支持的请求方法)
502 Bad Gateway 代为代理或网关的服务器无法连接到其父网关
503 Service Unavailable 服务器现在无法为请求提供服务
504 Gateway Timeout 网关或代理在请求另一服务器响应时超时了
505 HTTP Version Not Supported 服务器无法或不愿支持请求的协议版本

HTTP的报文与状态码的更多相关文章

  1. HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...

  2. HTTP请求响应报文 - 相关状态码 - GET_POST请求方法

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...

  3. 《图解Http》 2-6章: 基础,报文,状态码,首部。

    HTTP协议和Cookie 是stateless协议,自身不对请求和响应之间的通信状态进行保存.但随着技术发展,为了实现保存状态的功能,引入了Cookie技术. Cookie在请求和响应报文中写入信息 ...

  4. HTTP权威指南-报文与状态码

    所有的报文都向下流动 报文流向 报文组成 HTTP方法 状态码 GET示例 HEAD示例 100~199 信息性状态码 200~299 成功状态码 300~399重定向状态码 400~499 客户端错 ...

  5. HTTP响应报文应答状态码及含义

    本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码,应该是最新最全解释最详尽的,供大家参考:

  6. Http报文 状态码

    一.HTTP报文 1.HTTP报文介绍 HTTP报文:用于HTTP协议交互的信息. HTTP报文由报文头部和报文主体(非必须)构成,中间由空行来分隔. 1.1 请求报文:客户端发起的报文. 1).报文 ...

  7. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  8. http的报文结构和状态码的含义

    HTTP响应报文解剖 响应报文结构 HTTP的响应报文也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应报文: ①报文协议及版本: ②状态码及状态描述: ③响应报文头,也是由多个 ...

  9. (第三章,第四章)http报文内的http信息,返回结果的http状态码

    第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的 ...

随机推荐

  1. final finally finalize 区别

    public class Demo { public static void main(String[] args) { long start = System.currentTimeMillis() ...

  2. zookeeper安装

    http://blog.itpub.net/27099995/viewspace-1394831/ http://blog.csdn.net/huwei2003/article/details/491 ...

  3. httpd练习.md

    需求说明 分别用httpd-2.2和httpd-2.4 实现以下功能: 两个虚拟主机,名字为www.a.com.www.b.org. www.a.com 页面文件为/opt/a.com/htdocs, ...

  4. NOI2018准备Day12

    上午学了1个小时左右的指针,学了个从句子中分离单词的方法,其他的感觉没学到啥. 中午看了一会儿网络流,懵逼...... A了8道题,4道钻石.3道黄金.1道白银,自己写出了codevs"解药 ...

  5. 【转载】WEB前端开发规范文档

    本文转载自谈笑涧<WEB前端开发规范文档> 为 新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益 ...

  6. jQuery+css3 弹幕

    写了个基于jQuery+css3的弹幕功能,此功能面向手机wap,利用改变位移做弹幕功能会使一些性能低的手机浏览器卡,所以用了css3,此功能不支持非webkit内核浏览器 html部分 自己设置样式 ...

  7. 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别

    今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时 ...

  8. Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站

    此文章PDF文档下载地址:点击下载 0x00 写在前面 大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的s ...

  9. 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

    软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...

  10. 8.Android 系统状态栏沉浸式/透明化解决方案

    转载:http://www.jianshu.com/p/34a8b40b9308 前言 网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来 ...