首页 > 编程知识 正文

http响应报文数据过大,http协议请求报文的完整格式

时间:2023-05-06 18:23:29 阅读:136691 作者:4291

0 .引用罗剑锋老师的HTTP教程

HTTP权威指南-微信阅读

小林的HTTP

内容类型表示数据传输类型

1 .基本概念和知识HTTP是超文本传输协议,也就是HyperText Transfer Protocol.HTTP的名称“超文本协议传输”, (1)超文本;(2)传送;(3)协议HTTP使用计算机可理解的语言,该语言是计算机世界中使用的协议,根据计算机之间的交流通信规范(两个或多个参与者)和相关的各种控制HTTP协议是双向协议。 2.POST和GET Get方法的含义是请求从服务器获取资源。 该资源可以是静态文本、页面、图像视频等。 POST方法的意思是将数据发送到URI中指定的资源,数据放入消息的body中。 扩展概念,安全和幂等是HTTP协议,“安全”是作为请求方法的“无损”服务器上的资源。 “幂等”是指多次执行同一操作。 结果为【相同】。 那么,很明显,GET方法是安全的,是乘方的。 因为这是只读操作,所以无论操作多少次,服务器上的数据都是安全的,而且每次都有相同的结果。 POST是【添加或提交数据】操作,会修改服务器上的资源,因此不安全。 此外,多次提交数据也会创建多个资源。 因此, GET和POST方法之间的差异:GET方法的数据参数(不是幂等)暴露在第一行的URL中,而POST方法的数据参数位于消息主体中。 GET方法相对来说不具有POST安全性,因为其数据参数可以直接从URL中获取。 但是,GET更有效率。 GET方法的数据参数的大小有一定的限制(1024 )。 (原因也是其数据参数位于URL中。 另一方面,POST对数据大小没有限制.3.从web客户端到web服务器的消息的HTTP消息被称为请求消息request message,从服务器到客户端的消息是响应消息responsse 没有其他类型的HTTP消息。HTTP请求和应答消息的格式很相似。(HTTP 1 )第一行消息的第一行是第一行,在请求消息中说明要做什么,在应答消息中说明发生了什么)在标题字段的第一行之后有0个以上的标题字段,每个标题字段包含名称和值。 为了便于分析,两者之间用冒号(: )隔开,标题以空行结束,添加标题字段与添加新行一样简单。 )3)主体空行后是可选的消息主体,其中包含所有类型的数据。 请求主体包含要发送到Web服务器的数据。响应主体装载了返回客户端的数据。 首行和首行都以文本形式结构化,但主体不同,主体可以包含任意二进制数据(例如图像、视频、音轨、软件程序)。 当然,主体也可以包含文本。 3.1请求消息3.1.1请求消息示例

3.1.2开始行请求消息包括(1)请求方法(POST );(2)请求的URL )/CGI-bin/qqshow _ user _ props _ info );(3)协议类型和版本) 1.OPTIONS针对特定的资源返回服务器支持的http请求,以及通过向web服务器发送“*”的请求来测试服务器的功能性。 2 .返回2.HEAD与服务器缆线和GET请求匹配的响应,但未返回响应。 通过这种方法,可以获取响应的小标头中包含的元信息,而无需传输整个响应内容。 3.GET向特定资源发出请求。 本质上是发送请求以获取服务器上的资源。 资源通过一组HTTP标头和表示数据(如HTML文本、图像和视频)返回给客户端。 GET请求不会将数据发送到指定的资源(如提交表单或上载文件)来处理该请求。 数据包含在请求体中。 开机自检请求可能会导致创建新资源或修改现有资源。 Loadrunner的相应POST请求函数: web_submit_data、 web_submit_form5.PUT将其最新内容上载到指定的资源位置6.DELETE请求服务器删除由Request-URL标识的资源7.TRACE并显示服务器收到的请求3.1.4请求消息标头特定信息客户端IP :运行客户端的计算机的IP地址From :客户端用户的电子邮件地址Host :接收请求的服务器的主机名和端口号Referer : r :提供了有关客户端显示器显示颜色的信息的UA-CPU :提供了客户端CPU的类型或制造商UA-OS :提供了客户端计算机上运行的操作系统名称和版本User-Agent 通知了服务器可以发送的介质类型Accept-Charset :通知了可以发送到服务器的介质类型的字符集Accept-Encoding :传递服务器可以发送的编码:由服务器发送传达: Range :允许客户端列出请求所需的服务器行为。如果服务器支持范围请求,则请求资源的指定范围

Cookie:客户端用它向服务器传送数据Cookie2:用来说明请求端支持的cookie版本 3.1.5 请求报文头部中的常见字段 

 

(1)Host如:Host: www.A.com客户端发送请求时,用来指定服务器的域名,有了Host 字段,就可以将请求发往同一台服务器上的不同网站;(2)Content-Length如:Content-Length: 1000(3)Connection如:Connection: keep-aliveHTTP/1.1 版本的默认连接都是持久连接,但为了兼容老版本的 HTTP,需要指定Connection首部字段的值为 Keep-Alive.(4)Content-Type如:Content-Type: text/html; charset=utf-8例子表示的是中表示发送的是网页,而且编码是UTF-8.(5)Accept如:Accept: */*例子表示的客户端声明自己可以接受任何格式的数据.(6)Accept-Encoding如:Accept-Encoding: gzip, deflate字段说明数据的压缩方法,表示客户端支持的压缩方式. 3. 2 应答报文 3.2.1 应答报文实例

3.2.2 应答报文的起始行 应答报文的起始行也包含了3个部分(1)协议类型及版本号(2)状态码(3)状态码的文字描述 3.2.3 应答报文的起始行中的状态码分析 HTTP状态码分类HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP 状态码共分为以下 5 种类型:类别 原因短语1xxInformation(信息状态码) 接受的请求正在处理2xxSuccess(成功状态码) 请求正常处理完毕3xxRedirection(重定向状态码) 需要进行附加操作以完成请求4xxClient Error(客户端错误状态码)服务器无法处理请求5xxServer Error(服务端错误状态码)服务器处理请求出错2XX 请求成功2XX 的响应结果表明请求被正常处理了。200 OK200表示请求在服务器端被正常处理了,在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变.204 No Content204表示服务器接收的请求已经成功处理,但是在返回的响应报文中不含实体的主体部分.另外,也不允许返回任何实体的主体。当浏览器在发送请求后接收到204响应,它的显示页面不会发生更新.通常应用在只需要客户端往服务端发送信息,而服务端不需要发送新信息的情况下使用.206 Partial Content206表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求,响应报文内包含由Content-Range指定范围的实体内容.3XX 重定向3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求.301 Moved Permanently永久重定向,301状态码表示请求的资源已经分配了新的URI,以后请求该资源应该访问新的URI。也就是说,如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存.302 Found临时重定向,302表示请求的资源已经被分配了新的URI,希望客户端本次能使用新的URI访问。和301不同的是,这种资源的URI变更是临时的额,而不是永久的,因此不用去更新书签.303 See Other该状态码和 302 有着异曲同工之妙,表示由于请求对应的资源存在着另一个 URI,应使用GET方法定向获取请求的资源.如果浏览器原本是用POST方法去请求服务器,收到303状态码之后,会改用GET并访问资源新的URI.304 Not Modified304 状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。例如,客户端请求的资源在客户端本地已有缓存,会在请求头部中加入“If-Modified-Since", "If-None-Match"等字段,服务端根据这些字段信息判断这些资源信息是否经过修改,如果没有则返回 304 状态码,客户端可以直接使用缓存中的资源.304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系.PS:附带条件的请求是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部。307 Temporary Redirect临时重定向,和 302 Found 状态码有相同的含义.区别在于 307 不会强制浏览器将 POST 方法改为 GET 方法,而是遵循浏览器自身的标准.4XX 客户端错误4XX 的响应结果表明客户端是发生错误的原因所在.400 Bad Request400 状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。401 Unauthorized401 状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。第一次收到 401 状态码表示需要进行用户认证,第二次再收到 401 状态码说明用户认证失败。403 Forbidden403 状态码表明对请求资源的访问被服务器拒绝了,当未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能发生 403 。404 Not Found404 是我们最常见的状态码之一,它表示服务器上无法找到请求资源。此外,也可能是服务器端在拒绝请求且不想说明原因的时候使用。5XX 服务器错误5XX 的响应结果表明服务器本身发生错误。500 Internal Server Error500 状态码表明服务器端在执行请求时发生了错误。也有可能是 Web应用存在的 bug 或某些临时的故障。503 Service Unavailable503 状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。 3.2.4 响应报文首部提供的额外信息  Age:(从最初创建开始)响应持续时间Public:服务器为其资源支持的请求方法列表Retry-After:如果资源不可用的话,在此日期或时间重试Server:服务器应用程序软件的名称和版本Title:对HTML文档来说,就是HTML文档的源端给出的标题Warning:比原因短语更详细一些的警告报文Accept-Ranges:对此资源来说,服务器可接受的范围类型Vary:服务器会根据这些首部的内容挑选出最适合的资源版本发送给客户端Proxy-Authenticate:来自代理的对客户端的质询列表Set-Cookie:在客户端设置数据,以便服务器对客户端进行标识Set-Cookie2:与Set-Cookie类似WWW-Authenticate:来自服务器的对客户端的质询列表 3.2.5 响应报文中头部的常见字段 Content-Encoding 字段Content-Encoding 字段说明数据的压缩方法,表示服务器返回的数据使用了什么压缩格式.

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。