我爱编程

《http权威指南》阅读笔记,第三章,HTTP报文

2017-10-09  本文已影响0人  澄澄真可爱

目录

报文是如何流动的

报文流(快递)

就像是快递包裹(http报文),有个发货人(客户端),有个收货人(服务端),包裹上面贴了快递面单(起始行与首部),包裹里面有内容(报文主体),
包裹程在转运中心(各种服务器代理)之间单向传递,送达收货人(服务器)的过程就是快递(报文流)
当然这个过程是可以反向的,服务端想客户端发送报文.

HTTP报文的三个组成部分(起始行,首部,实体的主体)

报文(快递包裹)

报文格式

请求报文

< method> < request- URL> < version>
< headers>

< entity- body>

响应报文

< version> < status> < reason- phrase>
< headers>

< entity- body>

概述

请求报文支持的各种方法

方法 描述 是否包含主体
get 从服务器获取一份文档
post 向服务器发送需要处理的数据
put 向服务器提交一份文档
delete 从服务器删除一份文档
options 决定服务器上可以执行哪些方法
head 只从服务器获取文档的首部
trace 弃用 -
track 弃用 -
coonect 弃用 -

* delete不一定真的能删除,服务器可以不响应该请求

和响应报文一起返回的各种状态码

状态码分类

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

状态码明细

状态码 短语 解释
100 Continue 收到了请求的初始部分,请客户端继续.
101 Switching protocols 说明服务器正在根据客户端的制定,,将协议切换成Update首部所列的协议

100

客户端向服务器发很大文件,不确定服务器是否接受,可以先发一个带Expect:100 Continue的头,询问服务器是否接受,服务器返回 100响应后,发送实体结束.

101

客户端 使用 Upgrade 头的时候,服务器认可就返回101。Upgrade头用于 升级协议 的,比如现在用的是http/1.1,我想用http/2.1或者我想用 websocket ,就可以在请求头里面加上Upgrade:websocket 或者 Upgrade:http/2.0

状态码 短语 解释
200 OK 如你所愿,已搞定
201 Created 创建成功,主要用于put请求的返回
202 Accepted 收到,加入待办,可以返回完成时间估计,进度
203 Non-Authoritative-Information 非权威消息,比如客户端要个苹果,代理服务器从服务器拿个苹果(200),吃了一口再给你(203)
204 No-Content 木有内容,form的action,a链接返回204,不会跳转,可以判断访问成功
205 Reset-Content 用于表单提交后,重置表单而不刷新页面
206 Particle-Content 返回部分内容,必须返回Content-Range、Date、Etag或者Content-Location首部
状态码 短语 解释
300 Multiple Choices 找到好多,选一个呗
301 Moved Permanetly 没找到,看看别的呗
302 Found 找到了,不过先看看别的
303 See Other 看看别的,响应post请求
304 No Modified 未修改,看你的缓存去
305 Use Proxy 使用代理服务器(小明找老师请假,老师:出去,让你爸打电话给我)
306 弃用
307 Temporary Redirect 重定向的地址必须是get或者head请求,否则浏览器不自动跳转,需要用户确定
状态码 短语 解释
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
402 Payment Required 保留,将来使用
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置“您所请求的资源无法找到”的个性页面
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
409 Conflict 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed 客户端请求信息的先决条件错误
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable 客户端请求的范围无效
417 Expectation Failed 服务器无法满足Expect的请求头信息
状态码 短语 解释
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out 类似于408,充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理

各种各样的首部是做什么的

通用首部

通用的信息性首部

首部 描述
Coonection 允许客户端服务器指定与请求/响应连接有关的选项
Date 报文创建时间
MIME-Version 给出发送端的MIME版本
Trailer 如果报文采用分块传输编码就可以用这个首部列出位于报文拖挂( trailer) 部分的首部集合
Transfer-Encoding 告知接收端,对报文采用了怎样的接收方式
Update 给出发送端想要升级使用的新版本或协议
Via 显示报文经过的中间节点(代理,网关)

通用的缓存首部

首部 描述
Cache-Control 用于随报文传送缓存指示
Pragma 另一种随报文传送指示的方式,但并不专用于缓存

请求首部

请求的信息性首部

首部 描述
Client_IP 客户端IP
From 提供客户端用户的Email地址
Host 给出接收请求的服务器地址和端口
Referer 提供了当前请求URI的文档的URL
UA-Color 客户端显示器颜色相关
UA-CPU 客户端CPU的类型或制造商
UA-Disp 客户端显示屏幕
UA-OS 客户端系统
UA-Pixels 客户端像素
User_Agent 发起请求的客户端名

Accept首部

首部 描述
Accept 媒体类型
Accept-Charset 字符集
Accept-Encoding 编码方式
Accept-Language 语言
TE 拓展传输编码

条件请求首部

首部 描述
Expect 允许客户端列出某请求所要求的服务器行为
If-Match 如果实体标记与文档当前的实体标记相匹配,就获取这份文档
If-Modified-Since 某时间点后,资源被修改才返回
If-None-Match 返回标记不匹配的
If-Range 对文档的某个范围进行请求
If-Unmodefied-Since 某时间点后,资源没有被改动,才返回
Range 请求范围

安全请求首部

首部 描述
Authorization 身份认证
Cookie 向服务器传送一个令牌
Cookie2 用来说明请求端支持的cookie版本

代理请求首部

响应首部

首部 描述
Age 响应持续时间
Public 服务器为其资源支持的请求方法列表
Retry-After 如果资源不可用,在此日期重试
Title 对HTML文档来说,就是源端给出的标题
Warning 比原因短语中更详细的一些警告报文

参考

http状态码详解
http中的204和205

书中的内容很多都老旧了,请参考 http://www.w3c.org/
https://developer.mozilla.org/zh-CN/docs/Web/HTTP

上一篇下一篇

猜你喜欢

热点阅读