HTTP报文中的HTTP信息

一、编码提升传输速率

编码的好处:有效处理大量的访问请求

编码的弊端:会消耗更多的CPU资源

报文主体&实体主体

报文:HTTP通信的基本单元,8位组字节流组成,通过HTTP通信传输

实体:作为请求或响应的有效载荷数据被传输,实体首部+实体主体

一般情况下 报文=实体

编码操作时 报文≠实体 实体主体的内容发生了变化

常见的内容编码:gzip、compress(UNIX系统的标准编码)、deflate、identity(不编码)

分块传输编码:将实体主体分块,分割发送数据,逐步显示在页面。

二、发送多种数据的多部分对象集合

MIME多用途因特网邮件扩展机制:允许邮件处理文本、图片、视频等多个不同类型的数据。MIME中使用多部分对象集合的方法来容纳多份不同类型的数据。

多部分对象集合包含的对象包括:

  1. multipart/form-data:在Web表单文件上传时使用

  2. multipart/byteranges:状态码为206 Partial Content响应报文包含多个范围的内容时使用

三、获取部分内容的范围请求

下载中断问题的解决:可恢复机制,从下载出恢复下载

可恢复机制的实现:在请求中指定下载的实体范围。

例如:

请求5001-10000字节:Range: bytes=5001-10000

请求5001之后全部的内容:Range: bytes=5001-

从一开始到3000字节和5000-7000字节的多重范围:Range: bytes=-3000, 5000-7000

响应会返回状态码位206Partial Content的响应报文,如果是多重范围的范围请求,会在首部字段的Content-Type中标明multipart/byteranges。

如果服务器无法响应范围请求,则会返回状态码200OK和完整的实体请求

四、内容协商

内容协商机制:客户端和服务端就响应的资源内容进行交涉,提供给客户端最为合适的资源。内容协商的判断基准:响应资源的语言、字符集、编码方式等。

具体的应用举例:当浏览器默认语言是英语/中文,访问相同的WEB页面,显示对应的英文/中文。

请求报文中的某些首部字段可以作为判断的基准:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language

内容协商技术的三种类型

1. 服务器驱动协商:以请求的首部字段作为参考,在服务端处理。以浏览器发送的信息作为判定依据,对用户而言不一定最优。

2. 客户端驱动协商:用户在浏览器中进行选择。或者利用JavaScript脚本在Web页面上字段进行选择。例如根据OS和浏览器类型,自动切换为PC页面/手机页面。

3. 透明协商:服务器驱动协商+客户端驱动协商

HTTP状态码

一、HTTP状态码及其分类

状态码:表示HTTP请求的返回结果,用于标记服务器端处理是否正常,通知出现的错误。

状态码的类别
  类别 原因
1XX 信息性状态码 接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求 
4XX 客户端错误 服务端无法处理请求
5XX 服务端错误 服务处理请求出错

二、成功状态码2XX

1. 200 OK

表明从客户端发来的请求在服务端正常处理了。响应报文内,随状态码一起返回的信息会根据方法的不同而不同。GET获取到的信息是请求资源的实体。HEAD获取到的是实体首部,不获取实体的主体部分。

2. 204 OK

表明服务器接收的请求已经成功处理,但是返回的响应报文中不包含实体的主体部分。例如,浏览器发出请求后得到204响应,则浏览器显示的页面不会更新。

使用场景:需要客户端向服务端发信息,但不需要发送新信息内容。

3. 206 Partial Content

表示客户端发送了范围请求,服务端成功处理了请求。响应报文中包含由Content-Range指定范围的实体内容。

三、3XX重定向

3XX表明浏览器需要执行某些特殊的处理,从能正确处理请求

1. 301 Moved Permanently

永久性重定向。该状态码表示请求的资源已被分配了新的URI,之后使用的资源是新的URI的内容。(客户端要主动变更书签引用)【搬家房子卖了】

2. 302 Found

临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户本次能使用新的URI访问。(客户端不需要操作)已移动的资源对象的URI将来可能还会发生改变。【去旅游了暂时住在宾馆 旅游结束还可以回去】

3. 303 See Other

表示由于请求对应的资源存在另一个URI,应使用GET方法定向获取请求的资源。类似于302,但303明确表示了要让客户端用GET方法获取资源。

例如:使用POST访问CGI程序,执行结果是希望客户端以GET方法重定向到另一个URI,返回303。(现在很多浏览器将302视为303)

4. 304 Not Modified

表示客户端发送附带条件(GET请求报文中包含if-match/if-modified-since/if-none-match/if-range/if-unmodified-since)的请求时,服务端允许请求访问资源,但是不满足条件。304返回时,不包含任何响应的主体部分。【虽然是3XX但是和重定向无关】

说明无需再次传输请求的内容,也就是说可以使用缓存的内容。这通常是在一些安全的方法(safe),例如GET 或HEAD 或在请求中附带了头部信息: If-None-Match 或If-Modified-Since。

如果是 200 OK ,响应会带有头部 Cache-Control, Content-Location, Date, ETag, Expires,和 Vary.

5. 307 Temporary Redirect

临时重定向,和302相同,302禁止POST变换为GET,但大家不遵守。307会遵照浏览器的标准,不会从POST变成GET,但是处理响应时的行为,不同的浏览器有不同的情况。

四、客户端错误4XX

1. 400 Bad Request

请求报文中存在语法错误,服务端无法理解请求。浏览器会像200 OK一样对待该状态码。

2. 401 Unauthorized

请求需要由通过HTTP认证的认证信息。如果之前已经进行过1此请求,则表示用户认证失败。必须包含一个适用于被请求资源的WWW-Authenticate首部用于质询用户信息。当浏览器初次接收到401时弹出认证的堆化窗口。

3. 403 Forbidden

请求资源的访问被服务器拒绝了。例如:没有获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源ip地址视图访问)

4. 404 Not Found

服务器上无法找到请求的资源。

五、服务端错误5XX

1. 500 Internal Servcer Error

服务器在执行请求时发生了错误。Web应用中存在bug或某些临时的障碍。

2. 503 Serivce Unavailable

表明服务器很忙,处于超负载或正在进行停机维护,现在无法处理请求。如果直到接触繁忙状态需要的时间,可以写入Retry-After首部字段再返回给客户端。

状态码和状态的不一致:web应用程序的内部发生错误,状态码仍为200 OK的情况,也时常发生。

【HTTP】HTTP报文&状态码的更多相关文章

  1. Http报文 状态码

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

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

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

  3. php分享十七:http状态码

    一:http状态码 (200,301,302,304,305,400,401,403,404,500,501,502,503,504) HTTP状态码(HTTP Status Code)是用以表示网页 ...

  4. HTTP的报文与状态码

    本文是<HTTP权威指南>的读书笔记 HTTP报文是简单的格式化数据块.每条报文都包含一条来自客户端的请求或一条来自服务器的响应.它们由三部分组成: 对报文进行描述的起始行(start l ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 4.shell基本操作简介

    判断一个命令是不是内置命令,可以用type命令 1.printf :冒号 #:〉 test.txt 这里会建立一个空文件test.txt set -o|grep  emacs 查看 emacs 模式是 ...

  2. android自定义View&自定义ViewGroup(上)

    一般自定义view需要重写的方法 void onMeasure(int widthMeasureSpec, int heightMeasureSpec) void onSizeChanged(int ...

  3. TOP-K Problems

    最小的K个数 直接数组排序,取出前K个.复杂度\(O(nlogn)\). 分治 此题只要求出最小的K个数,并不要求这K个数有序. 我们可以借鉴快排中的partition做法,将比第K个数小的都放前面, ...

  4. 2019-2020 ICPC, Asia Jakarta Regional Contest A. Copying Homework (思维)

    Danang and Darto are classmates. They are given homework to create a permutation of N integers from  ...

  5. P1353 Running S

    题意:https://www.luogu.com.cn/problem/P1353 奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行 n 分钟的晨跑.在每分钟的开始 ...

  6. dfs+线段树 zhrt的数据结构课

    zhrt的数据结构课 这个题目我觉得是一个有一点点思维的dfs+线段树 虽然说看起来可以用树链剖分写,但是这个题目时间卡了树剖 因为之前用树剖一直在写这个,所以一直想的是区间更新,想dfs+线段树,有 ...

  7. JMeter-SHA256加密算法接口测试

    前言 我们已经学过了如何利用python脚本对SHA256加密接口进行测试,还没学会的小伙伴们可以看回我写的随笔Python-SHA256加密算法接口测试,那么,对于SHA256加密算法接口,我们如何 ...

  8. Day_11【集合】扩展案例5_对list集合对象中的元素进行反转,求最大值最小值,求元素i在list集合中首次出现的索引,将oldvalue替换为newvalue

    分析以下需求,并用代码实现 定义MyArrays工具类,该工具类中有以下方法,方法描述如下: 1.public static void reverse(ArrayList<Integer> ...

  9. 帝国cms列表页内容简介字段smalltext去除里面html格式代码 设置方法

    帝国cms列表页内容简介字段smalltext去除里面html格式代码帝国cms列表页调用内容简介出现html代码怎么办 近来在用帝国cms的时候,发现一个问题,在列表页调用产品简介的时候出现了这种h ...

  10. python解析excel中图片+提取图片

    解析表格是常用的技术.但是有些表各里面有图片怎么办?我想获得表格里面的图片,值得注意的是,图片没有位置信息,所以最好给图片进行编号,编号代表位置. 下面附上提取表格里面图片的代码.只要输出表格地址,和 ...