我的编程空间,编程开发者的网络收藏夹
学习永远不晚

3.HTTP报文内的HTTP信息

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

3.HTTP报文内的HTTP信息

HTTP通信过程包括从客户端发往服务端的请求及从服务端返回客户端的响应.本章就来让我们了解一下请求和响应是怎么运作的.

一 .HTTP报文 :

  1. 用于HTTP协议交互的信息被称为HTTP报文,请求端(客户端)的HTTP报文叫做请求报文,响应端(服务端)的叫做响应报文. HTTP报文本身是由多行(CR_LF)数据构成的字符串文本.HTTP报文大致可分为报文首部和报文主体.

二请求报文及相应报文结构

  1. 请求报文和响应报文的首部内容由以下数据组成.
    1. 请求行 : 包含用于请求的方法,请求URI和HTTP版本.
    2. 状态行 : 包含表名响应结果的状态码,原因短语和HTTP版本.
    3. 首部字段 : 包含表示请求和响应的各种条件和属性的各类首部. 一般有四种首部,分别是:通用首部,请求首部,响应首部和实体首部.
    4. 其他 : 可能包含HTTP的RFC里未定义的首部(cookie等).

三.编码提升传输速率 :

  1. HTTP在传输时可以按照原貌直接传输,但也可以在传输过程中通过编码提升传输速率.通过在传输时编码,能有效的处理大量的访问请求.但是,编码的操作需要计算机来完成,因此会消耗更多的CPU等资源.

  2. 报文主体和实体主体的差异 :

    1. 报文(message) : 是HTTP通信中的基本单位,由8位组字节流(octet sequence , 其中octet为8个比特)组成,通过HTTP通信传输.
    2. 实体(entity) : 作为请求或响应的有效载荷数据(补充项)被传输 ,其内容由实体首部和实体主体组成.
    3. HTTP报文的主体用于传输请求或相应的实体主体 .通常,报文主体等于实体主体.只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异.报文和实体这两个术语在之后会经常出现,请事先理解两者的差别.
  3. 压缩传输的内容编码 : 向待发送邮件内增加附件时,为了使邮件容量变小,我们会先用Zip压缩文件之后再添加附件发送.HTTP协议中有一种被称为内容编码的功能也能进行类似的操作.内容编码指明应用在实体内容上的编码格式,并保持实体信息鸳鸯压缩.内容编码后的实体由客户端接收并负责解码. 常用的内容编码有以下几种 :

    1. gzip (gnu zip)
    2. compress(unix系统的标准压缩)
    3. deflate(zlib)
    4. identity(不进行编码)
  4. 分割发送的分块传输编码 : 在HTTP通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面. 在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面.这种把实体主体分块的功能称为分块传输编码(chunked transfer coding).

  5. 分块传输编码会将实体主体分成多个部分(块).每一块都会用十六进制来标记块的大小,而实体的最后一块会使用"0(CR+LF)"来标记.使用分块传输编码的实体会由接收的客户端负责解码,回复到编码前的实体主体.HTTP1.1 中存在一种称为传输编码(transfer coding)的机制,它可以在通信时按某种编码方式传输,但只定义作用域分块传输编码中.

四. 发送多种数据的多部分对象集合

1 : 发送邮件时,我们可以在邮件里写入文字并添加多份附件.这里是因为采用了MIME(Multipurpose Internet Mail Extensions ,多用途因特网邮件扩展) 机制,它允许邮件处理文本,图片,视频等多个不同类型的数据. 相应的,HTTP协议中也采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体.通常是在图片或文本等上传时使用. 多部分对象集合包含的对象如下 :

  1. multipart / form-data : 在web表单文件上传时使用.
  2. multipart / byte ranges : 状态码206(partial content , 部分内容) 响应报文包含了多个范围的内容时使用.
  3. 在HTTP报文中使用多部分对象集合时,需要在首部字段里加上content-type .

2.使用boundary字符串来划分多部分对象集合指明的各类实体. 在boundary 字符串指定的各个实体的起始行之前植入"--" 标记(例如 : --AaB03X , --THIS_STRING_SEPARATES) ,而在多部分对象集合对应的字符串的最后插入"标记"(例如: --AaB03X , --THIS_STRING_SEPARATES) 作为结束.多部分对象集合的每个部分类型中,都可以含有首部字段.另外,可以在某个部分中嵌套使用多部分对象集合. 有关多部分对象更详细的解释,请参考RFC2046.

五.获取部分内容的范围请求

  1. 以前,用户不能使用现在这种高速的带宽访问互联网,当时,下载一个尺寸稍大的图片或文件就已经很吃力了. 如果下载过程中遇到网络中断的情况,那就必须重头开始.为了解决上述问题,需要一种可恢复的机制.所谓恢复是指能从之前下载中断处恢复下载.要实现该功能需要指定下载的实体范围.像这样,指定范围发送的请求叫做范围请求(range request) . 对一份10000字节带下的资源,如果使用范围请求,可以只请求5001 -- 10000字节内的资源.

  2. 执行范围请求时,会用到首部字段range来制定资源的byte范围 .
    1. 5001 -10000字节 : Range :bytes= 5001 -10000
    2. 从5001字节之后全部的 : Rnage : bytes=5001-
    3. 从一开始到3000字节和5000-7000字节的多重范围 : Range:bytes=-3000,5000-700
    4. 针对范围请求,响应会范围状态码为206 Partial content 的响应报文.另外,对于多重范围的范围请求,响应会在首部字段content-type标明multipart/byteranges后返回响应报文.如果服务端无法响应范围请求,则会返回状态码200 OK和完整的实体内容.

六 . 内容协商返回最合适的内容

  1. 同一个web网站有可能存在着多份相同的内容页面.比如英语班和中文版的web页面,它们内容上虽相同,但是用的语言却不同.当浏览器的默认语言为英语或中文,访问相同的URI的web页面时,则会显示对应的英语版或中文版的web页面,这样的机制称为内容协商(content negotiation)

  2. 内容协商机制是指客户端和服务端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源.内容协商会以响应资源的语言,字符集,编码方式等作为判断的基准.包含在请求报文中的某些首部字段如下,就是判断的基准,这些首部字段的详细说明请参考下一章.

    1. accept
    2. accept-charset
    3. accept-encoding
    4. accept-language
    5. content-language
  3. 服务器驱动协商(server-driven negotiation) : 由服务器端进行内容协商 . 以请求的首部字段为参考.在服务端自动处理.但对用户来说,以浏览器发送的信息作为判定的依据,并不一定能筛选出最优内容.

  4. 客户端驱动协商(agent-driven negotiation) : 由客户端进行内容协商的方式.用户从浏览器显示的可选项列表中手动选择.还可以利用JavaScript脚本在web页面上自动进行上述选择.如果按OS的类型或浏览器类型,自行切换成PC版页面或手机版页面

  5. 透明协商(transparent negotiation) : 是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行协商的一种方法 .

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

3.HTTP报文内的HTTP信息

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

3.HTTP报文内的HTTP信息

HTTP通信过程包括从客户端发往服务端的请求及从服务端返回客户端的响应.本章就来让我们了解一下请求和响应是怎么运作的.一 .HTTP报文 :用于HTTP协议交互的信息被称为HTTP报文,请求端(客户端)的HTTP报文叫做请求报文,响应端(服
2023-01-31

如何使用golang中的net/http/httputil.DumpRequest函数打印HTTP请求信息

如何使用golang中的net/http/httputil.DumpRequest函数打印HTTP请求信息概述:在Golang中,可以使用net/http包提供的httputil.DumpRequest函数来打印HTTP请求信息。这个函数可
如何使用golang中的net/http/httputil.DumpRequest函数打印HTTP请求信息
2023-11-18

如何使用golang中的net/http/httputil.DumpResponse函数打印HTTP响应信息

如何使用golang中的net/http/httputil.DumpResponse函数打印HTTP响应信息在golang中,我们可以使用net/http包来发送HTTP请求并接收HTTP响应。有时候,我们需要查看HTTP响应的详细信息,例
如何使用golang中的net/http/httputil.DumpResponse函数打印HTTP响应信息
2023-11-18

详解自定义SpringMVC的Http信息转换器的使用

在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制。使用系统默认配置的HttpMessageConverter进行解析,然后
2023-05-30

http报文结构与curl的使用方法

本篇内容介绍了“http报文结构与curl的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!http协议使用广泛,使用场景不必多说了。
2023-06-19

CGI程序中HTTP头部经常使用的信息有哪些

这篇文章主要介绍“CGI程序中HTTP头部经常使用的信息有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CGI程序中HTTP头部经常使用的信息有哪些”文章能帮助大家解决问题。HTTP头部hell
2023-06-08

怎么实现APP HTTP接口报文的加密与压缩

今天给大家介绍一下怎么实现APP HTTP接口报文的加密与压缩。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。在做APP类的产品时,整个业务逻辑通常都会放在服务
2023-06-04

帝国CMS实现内容页调用当前会员信息及文章信息的方法

采用帝国cms制作会员系统的时候经常会需要在各个页面灵活的调用会员信息及对应栏目列表信息,本文讲述了帝国cms实现内容页调用当前会员信息及文章信息的方法,具体步骤如下: 一、调用会员信息: 把以下代码加到内容页模板里即可 复制代码代码如下:
2022-06-12

如何写入内存中的文件,然后通过 HTTP 发送它而不使用中间文件?

问题内容我需要请求、处理数据并将其格式化为 csv,然后根据请求通过 web 服务发送它们。假设请求和处理的数据位于下面的 data 中,我设法使用中间临时文件来做到这一点:package mainimport ("encoding/
如何写入内存中的文件,然后通过 HTTP 发送它而不使用中间文件?
2024-02-06

【IoT开发工具箱 | 03】搭建可外网访问的内网穿透http文件服务器

这是机器未来的第56篇文章 原文地址:https://robotsfutures.blog.csdn.net/article/details/127046100 《Python数据科学快速入门系列》快速导航: 【IoT开发工具箱 |
2023-08-23

wordpress通过当前文章的ID获取文章标题内容简介的信息

wordpress通过当前文章的ID获取文章的信息用的极多,在wordpress二次开发中,上篇文章说过,获取当前文章id以及获取当前文章评论数,其实,只要获取了当前文章的id,可以获取很多信息! 复制代码代码如下: 编程客栈
2022-06-12

如何实现HttpMessageConverter报文信息转换器的深入分析

如何实现HttpMessageConverter报文信息转换器的深入分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言HttpMessageConverter,报文信息
2023-06-26

织梦dedecms内页、详情页中调用文章发布者信息的方法

很多人在使用织梦cms v5.7都遇到了一个关于如何调用文章内容页中的会员信息。 第一、在官方给出的默认模板article_artcile.htm中我们可以看到如下代码:复制代码代码如下:{dede:memberinfos}会员头像:

Win8系统鼠标指向文件夹显示出提示信息及含有的内容

在Windows 8系统中,有很多细小的功能不太为人所知,但又能不小地提高使用效率。比如,我们想要让鼠标指向某个文件夹的时候,能够显示文件夹的相关提示信息以及含有的内容,要怎么做呢?  操作步骤:1、先打开计算机点击“查看&rd
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录