HTTP学习(五)实体、编码

2023-11-13

HTTP作为现在非常重要的协议,需要仔细梳理一下。本次学习知识点来自于《HTTP权威指南》,只是文中知识点罗列,算是读书笔记,请有兴趣的读者购买《HTTP权威指南》完整阅读

一、实体

每天都有数以亿计的各种媒体对象经由 HTTP 传送, 如图像、 文本、 影片以及软件程序等。 只要你能叫出名字, HTTP 就可以传送。 HTTP 还会确保它的报文被正确传送、 识别、 提取以及适当处理。 具体说来, HTTP 要确保它所承载的“货物” 满足以下条件。
可 以 被 正 确 地 识 别(通 过 Content-Type 首 部 说 明 媒 体 格 式, ContentLanguage 首部说明语言), 以便浏览器和其他客户端能正确处理内容。
可以被正确地解包(通过 Content-Length 首部和 Content-Encoding 首部)。
是最新的(通过实体验证码和缓存过期控制)
符合用户的需要(基于 Accept 系列的内容协商首部)
在网络上可以快速有效地传输(通过范围请求、 差异编码以及其他数据压缩方法)
完整到达、 未被篡改(通过传输编码首部和 Content-MD5 校验和首部) 

1、报文是箱子, 实体是货物

HTTP 实体首部(参见第 3 章) 描述了 HTTP 报文的内容。 HTTP/1.1 版定义了以下10 个基本字体首部字段。
Content-Type
实体中所承载对象的类型。
Content-Length
所传送实体主体的长度或大小。
Content-Language
与所传送对象最相配的人类语言。
Content-Encoding
对象数据所做的任意变换(比如, 压缩)。
Content-Location
一个备用位置, 请求时可通过它获得对象。
Content-Range
如果这是部分实体, 这个首部说明它是整体的哪个部分。
Content-MD5
实体主体内容的校验和
Last-Modified
所传输内容在服务器上创建或最后修改的日期时间。
Expires
实体数据将要失效的日期时间。
Allow
该资源所允许的各种请求方法, 例如, GET HEAD
ETag
这份文档特定实例(参见 15.7 节) 的唯一验证码。 ETag 首部没有正式定义为实体首部, 但它对许多涉及实体的操作来说, 都是一个重要的首部。
Cache-Control
指出应该如何缓存该文档。 和 ETag 首部类似, Cache-Control 首部也没有正式定义为实体首部。
2、Transfer-Encoding首部
HTTP 协议中只定义了下面两个首部来描述和控制传输编码。
Transfer-Encoding
告知接收方为了可靠地传输报文, 已经对其进行了何种编码。
TE
用在请求首部中, 告知服务器可以使用哪些传输编码扩展。 
3、新鲜度

服务器应当告知客户端能够将内容缓存多长时间, 在这个时间之内就是新鲜的。服务器可以用这两个首部之一来提供这种信息: Expires(过期) 和 CacheControl(缓存控制)。Expires 首部规定文档“过期” 的具体时间——此后就不应当认为它还是最新的。Expires 首部的语法如下:
Expires: Sun Mar 18 23:59:59 GMT 2001
4、验证码

HTTP 把验证码分为两类: 弱验证码weak validators) 和强验证码strong validators)。弱验证码不一定能唯一标识资源的一个实例, 而强验证码必须如此。 弱验证码的一个例子是对象的大小字节数。 有可能资源的内容改变了, 而大小还保持不变, 因此假想的字节计数验证码与改变是弱相关的。 而资源内容的加密校验和(比如 MD5)就是强验证码, 当文档改变时它总是会改变。 

二、国际化
1、HTTP对国际性内容的支持
服 务 器 通 过 HTTP 协 议 的 Content-Type 首 部 中 的 charset 参 数 和 ContentLanguage 首部告知客户端文档的字母表和语言。 这些首部描述了实体主体的“信息盒子” 里面装的是什么, 如何把内容转换成合适的字符以便显示在屏幕上以及里面的词语表示的是哪种语言。
同时, 客户端需要告知服务器用户理解何种语言, 浏览器上安装了何种字母表编码算法。 客户端发送
Accept-Charset 首部和 Accept-Language 首部, 告知服务器它理解哪些字符集编码算法和语言以及其中的优先顺序。 
2、字符集是把字符转换为二进制码的编码
HTTP 字符集的值说明如何把实体内容的二进制码转换为特定字母表中的字符。 每个字符集标记都命名了一种把二进制码转换为字符的算法(反之亦然)。  
下 面 的 Content-Type 首 部 告 知 接 收 者, 传 输 的 内 容 是 一 份 HTML 文 件, 用charset 参数告知接收者使用 iso-8859-6 阿拉伯字符集的解码算法把内容中的二进制码转换为字符:
Content-Type: text/html; charset=iso-8859-6 
3、MIMEcharset 标记。
4、字符集术语 
以下是应当了解的电子化字符系统的 8 个术语。
字符
字符是指字母、 数字、 标点、 表意文字(比如汉语)、 符号, 或其他文本形式的
书写“原子”。 由统一字符集(
Universal Character SetUCS, 它的非正式的名字
Unicode3) 首创, 为多种语言中的很多字符开发了一系列标准化的文本名称,
它们常用来便捷地命名字符, 而且不会与其他字符冲突。
4
字形
描述字符的笔画图案或唯一的图形化形状。 如果一个字符有多种不同的写法, 就有多个字形(参见图 16-3)。
编码后的字符
分配给字符的唯一数字编号, 这样我们就可以操作它了。
代码空间
计划用于字符代码值的整数范围。
代码宽度
每个(固定大小的) 字符代码所用的位数。
字符库
特定的工作字符集(全体字符的一个子集)
编码后的字符集
组成字符库(从全球的字符中选出若干字符) 的已编码字符集, 并为每个字符分配代码空间中的一个代码。 换句话说, 它把数字化的字符代码映射为实际的
字符。
字符编码方案
把数字化的字符代码编码成一系列二进制码(并能相应地反向解码) 的算法。 字符编码方案可用来减少识别字符所需要的数据总量(压缩)、 解决传输限制、 统
一重叠编码字符集


三、发布
1、web主机托管
随着 Web 迅速成为主流, 每人都想要一个网站, 但很少有人有能力或时间来搭建带空调的服务器机房, 注册域名, 或购买网络带宽。 为了满足人们的迫切需求, 出现了很多新的企业, 提供了专业化管理的 Web 主机托管服务。 服务级别有多种, 从物理上的设备管理(提供空间、 空调以及线缆) 到完整的 Web 主机托管, 顾客只需要提供内容就行了。 
2、虚拟主机托管
许多 Web 托管者通过让一些顾客共享一台计算机来提供便宜的 Web 主机托管服务。这称为共享主机托管虚拟主机托管。 每个网站看起来是托管在不同的服务器上,但实际上是托管在同一个物理服务器上。 从最终用户的角度来看, 被虚拟托管的网站应当和托管在专用服务器上的网站没什么区别。 
3、镜像的服务器集群
服务器集群是一排配置相同的 Web 服务器, 互相可以替换。 每个服务器上的内容可以通过镜像复制, 这样当某个服务器出问题的时候, 其他的可以顶上。
4、内容分发网络
简单地说, 内容分发网络(CDN) 就是对特定内容进行分发的专门网络。 这个网络中的节点可以是 Web 服务器、 反向代理或缓存。
四、重定向与负载均衡
1、重定向
Web 服务器会根据每个 IP 来处理请求。 将请求分摊到复制的服务器中去, 就意味着应该把对某特定 URL 的每条请求都发送到最佳的 Web 服务器上去(最靠近客户端的、 或负载最轻的或采用其他优化策略选择的服务器)。 重定向到某台服务器就像将所有需要给汽车加油的司机都送到最近的加油站去一样。 
2、重定向方式
3、HTTP重定向
4、DNS重定向
5、因特网缓存协议
ICP(因特网缓存协议) 允许缓存在其兄弟缓存中查找命中内容。 如果某个缓存中没有 HTTP 报文所请求的内容, 它可以查明内容是否在附近的兄弟缓存中, 如果在,就从那里获取内容, 以避免查询原始服务器而带来的更多开销。 可以把 ICP 当作一个缓存集群协议。 HTTP 请求报文的最终目的地可以通过一系列的 ICP 查询确定,从这个角度来说, 它就是一个重定向协议。 
6、HTCP(超文本缓存协议)
HTCP(超文本缓存协议) 允许兄弟缓存之间通过 URL 和所有的请求及响应首部来相互查询文档是否存在, 以降低错误命中的可能。 而且 HTCP 允许兄弟缓存监视或请求在对方的缓存中添加或删除所选中的文档, 并修改对方已缓存文档的缓存策略。 









本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP学习(五)实体、编码 的相关文章

  • Go客户端程序生成大量TIME_WAIT状态的socket

    我有一个 Go 程序 它从多个 goroutine 生成大量 HTTP 请求 运行一段时间后 程序报错 connect cannot allocaterequestedaddress 当检查时netstat 我得到大量 28229 个连接T
  • 客户端/服务器使用哪些 Cache-Control 标头值?

    我试图了解哪些值Cache Control将在请求中使用 并将在响应中使用 This https stackoverflow com questions 42652931 why use cache control header in re
  • 无效数据的 REST 响应代码

    如果出现以下情况 应将什么响应代码传递给客户端 用户注册时传递了无效数据 例如电子邮件格式错误 用户名 电子邮件已存在 我选择了403 我还发现了以下我觉得可以用的 维基百科 412 前提条件失败 服务器不满足请求者要求的先决条件之一 提出
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • 使用 Angularjs,$http 在 Microsoft Edge 中发布返回响应错误

    好吧 当我开发一个管理页面进行测试时 Microsoft Edge 中出现了一个奇怪的问题 这是从loginCtrl js服务器获取响应的部分源代码 http method POST url Define apiUrl admin logi
  • 不加载隐藏图像

    我的网站上有一堆隐藏图像 它们的容器 DIV 具有 style display none 根据用户的操作 某些图像可能会通过 JavaScript 显示 问题是我的所有图像都是在打开页面时加载的 我想通过仅加载最终可见的图像来减轻服务器的压
  • 防止表单重新提交

    第一页包含一个 HTML 表单 第二页 处理提交的数据的代码 第一页中的表格已提交 浏览器被重定向到第二页 第二页处理提交的数据 此时 如果刷新第二页 则会弹出 确认表单重新提交 警报 这可以预防吗 人们过去常采取两种方法 方法一 使用 A
  • Spring RestTemplate - 带有请求正文的http GET [重复]

    这个问题在这里已经有答案了 可能的重复 带请求正文的 HTTP GET https stackoverflow com questions 978061 http get with request body 我在这里读过一些不提倡通过 HT
  • AngularJS 1.X 中的异步调用是如何工作的? $Http 调用没有返回值

    我有以下名为的函数getvalue 它与控制器一起位于 AngularJS 模块内 我试图在单击事件上调用此函数 调用控制器中的另一个函数 我希望我很清楚 功能 function getvalue Data http var value u
  • 如何解析来自基于 C 的 Web 服务器的 HTTP 请求

    我有一个编程项目 我必须创建一个处理 HTTP 请求的多线程 Web 服务器 我刚刚学习了套接字编程 并且运行了一个客户端和一个服务器 我想知道解析 HTTP 请求标头的最佳方法是什么 我看到了这个 如何用C 解析http请求 https
  • Angular2:动态同步http请求

    Goal 发出一系列同步 http 请求并能够将它们作为一个可观察流进行订阅 示例 不工作 let query arr test1 test2 test3 function make request query arr if query a
  • 当查看 X-Auth-Token 与 Authorization 标头之间的差异时,哪个是首选?

    下面两个标题有什么区别 哪一个是首选 X Auth Token dadas123sad12 Authorization Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ Authorization是客户端使用的主要标头认证如
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • 无法在 git 上获取 Http 工作

    我在拇指驱动器上使用 gitbash 作为 git 我的防火墙阻止了我 并且想设置我的 git 以进行 http 访问 我使用 github 并且已经看到了有关如何执行此操作的各种信息 但我还不够了解 无法让它为我自己工作 我在 php i
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具
  • HTTPbis - bis 是什么意思?

    我经常看到 bis 附加到协议版本 例如 v 34bis 或 httpbis bis 是什么意思或代表什么 我认识的一位电信工程师认为它可能起源于法国 正如其他人已经说过的 bis 来自 两次 或 重复 http oxforddiction
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 处理rails应用程序中的rack_throttle异常

    当超出速率限制时 如何处理由rack throttle gem 生成的错误 现在我只收到包含以下内容的回复 Internal Server Error undefined method each for 403 Forbidden Rate
  • 使用 Django 发出 HTTP 请求并反序列化输出

    因此 我对整个 Web 开发几乎完全陌生 但已经投入到一个使用 Django 从 Web 服务中提取和解析数据的副项目中 并且即使在查看 Django 时 我也很难准确地理解事情是如何工作的 文档 在 Django 中 我已经完成了所有设置
  • HTTP 响应可以省略 Reason-Prase 吗?

    正常的 HTTP 响应如下所示 HTTP 1 0 200 OK 可以省略什么吗RFC http www w3 org Protocols rfc2616 rfc2616 sec6 html称为原因短语 就像是 HTTP 1 0 200 RF

随机推荐

  • Webpack打包-打包详细流程

    Webpack Webpack是一个现代化的静态模块打包器 支持JavaScript CSS 图片等资源的打包 它将所有模块及其依赖项视为静态资源 并创建一个依赖关系图 将这些资源转换为有效的输出文件 通过Webpack 可以将多个文件打包
  • HTTP 304 错误的详细解释

    Not Modified 客户端有缓冲的文档并发出了一个条件性的请求 一般是提供If Modified Since头表示客户只想比指定日期更新的文档 服务器告诉客户 原来缓冲的文档还可以继续使用 如果客户端在请求一个文件的时候 发现自己缓存
  • 【深度学习实验】前馈神经网络(三):自定义多层感知机(激活函数logistic、线性层算Linear)

    目录 一 实验介绍 二 实验环境 1 配置虚拟环境 2 库版本介绍 三 实验内容 0 导入必要的工具包 1 构建数据集 2 激活函数logistic 3 线性层算子 Linear 4 两层的前馈神经网络MLP 5 模型训练 一 实验介绍 本
  • 文章:LIME:Why Should I Trust You?

    本文结合文章 Why Should I Trust You Explaining the Predictions of Any Classifier 主要阐述一下内容 LIME 算法意义 LIME 算法原理 LIME 算法效果 原文参见 h
  • 【Python实训】Python实现多级菜单

    menu 北京 海淀 五道口 soho 网易 google 中关村 爱奇艺 汽车之家 youku 上地 百度
  • 二叉树的建立与遍历详解 菜鸟都能看懂的教程

    树形结构要多利用递归来求解 递归的关键就是想清楚所有的基准情形 然后扩展到一般情况 写代码的时候最好把基准情况放在前面 把一般情况放在后面 定义二叉树结构体 typedef struct BinaryTreeNode TelemType d
  • 前端获取后端的BigDecimal类型字段数值,丢失精度处理

    1 问题 前端请求后端接口获取BigDecimal类型字段数值时丢失精度 例如 5999 00变成5999 5999 50变成5999 5 2 解决方法 在字段上添加 JsonFormat shape JsonFormat Shape ST
  • 旋转矩阵推导

    一 前言 周而复始的搜索 循环往复的记忆 但终究还是不深刻 不能像老师一样交给一个新人 所谓提纲挈领 名师指导还是相当有必要的 因为所有的坎 名师都遇到过 而且总结了自己的一套方法论 这样才能够言简意赅 才能够让一个什么都不懂 有点夸张 略
  • springboot项目创建之后多个文件报红

    原因 因为你之前可能使用了git提交过项目 没有修改配置 而且在idea里默认就会会用git 解决办法 file gt seting gt version Control gt 编辑 gt 点击你的项目 gt vcs 修改为null
  • 服务器安全狗搭建过程

    发现安全狗构建基础的服务器安全环境简单高效 推荐 整理步骤如下 环境 Centos 6 x 7 x 64位 wget http down safedog cn safedog linux64 tar gz tar xzvf safedog
  • 【机器学习】感知机、线性支持向量机

    文章目录 一 感知机 线性二分类 二 感知机的损失函数 三 感知机实战 sklearn linear model Perceptron 四 Linear SVM 参考链接 一 感知机 线性二分类 感知机是一种相对简单的 二分类 的 线性 分
  • 在职场中哪些人不会被企业团队选用?在企业团队中哪些人不能用?

    企业团队离不开员工的打拼 那么现在人才济济的社会 企业团队中那些人是不能用的 小人不能用 当今社会我们评论一个人的好坏 首先看到的是他的道德品质 当一个人的道德品质不行 道德品行很差时 我们统称这类人为小人 都说远小人 在职场中也一样 小人
  • 华为OD机试 C++【TLV解析】

    题目 你收到了一串由两端设备传递的TLV格式的消息 现在你需要根据这串消息生成一个对应的 tag length valueOffset 列表 详细说明 这串消息其实是由许多小组成的 每一小组里包含了tag length value 其中 t
  • 关于element-ui el-cascader 级联选择器 单独选择任意一级选项,去掉单选按钮(记录一下)

    效果如下 分类 代码如下 单独选择任意一项属性 checkStrictly 绑定的是分类 id popper class自定义类名
  • SpringBoot--基础--05--错误处理

    SpringBoot 基础 05 错误处理 一 原理 1 1 自动配置类 ErrorMvcAutoConfiguration 1 2 一但系统出现4xx或者5xx之类的错误 ErrorPageCustomizer就会生效 定制错误的响应规则
  • 13个SQL优化技巧

    1 避免无计划的全表扫描 如下情况进行全表扫描 该表无索引 对返回的行无人和限制条件 无Where子句 对于索引主列 索引的第一列 无限制条件 对索引主列的条件含在表达式中 对索引主列的限制条件是is not null或 对索引主列的限制条
  • 国内IoT云平台横向对比

    三年过去了 目前各IoT平台功能有了极大的丰富和优化 行业头部玩家也逐渐浮出水面 目前市场的排名如下 阿里 小米 京东 百度 涂鸦 这几家以开放的生态 接入了千万甚至亿级设备 传统设备厂家如美的 海尔也在积极搭建自己的物联网平台 物联网已然
  • 华为天才少年谢凌曦分享了万字长文,阐述了关于视觉识别领域发展的个人观点...

    作者 谢凌曦 编辑 桃子 报道 新智元 计算机视觉识别领域的发展如何 华为天才少年谢凌曦分享了万字长文 阐述了个人对其的看法 最近 我参加了几个高强度的学术活动 包括CCF计算机视觉专委会的闭门研讨会和VALSE线下大会 经过与其他学者的交
  • 【软件分析/静态分析】学习笔记01——Introduction

    课程链接 李樾老师和谭天老师的 南京大学 软件分析 课程01 Introduction 哔哩哔哩 bilibili 目录 一 静态程序分析介绍 1 1 PL and Static Analysis 程序语言和静态分析 1 2 为什么要学 S
  • HTTP学习(五)实体、编码

    HTTP作为现在非常重要的协议 需要仔细梳理一下 本次学习知识点来自于 HTTP权威指南 只是文中知识点罗列 算是读书笔记 请有兴趣的读者购买 HTTP权威指南 完整阅读 一 实体 每天都有数以亿计的各种媒体对象经由 HTTP 传送 如图像