HTTP:200 OK 状态代码后回复期间出错

2024-02-01

作为 HTTP 1.1 服务器,我使用 200 OK 状态代码回复 GET 请求,然后开始将数据发送到客户端。 在此发送过程中,发生错误,我无法完成。

我无法发送新的状态代码,因为最终状态代码已发送。

我应该如何让客户端知道发生了错误并且我无法继续此 HTTP 请求?

我只能想到一种解决方案:关闭套接字,但它并不完美:它破坏了保持活动功能,并且没有向客户端提供对该错误的明确解释。

HTTP 标准似乎假设服务器在开始回复之前就已经确切知道要回复什么。 但情况并非总是如此。 例子: 我从磁盘返回一个非常大的文件(几 GB),并且在读取文件期间的某个时刻出现 IO 错误。 与大型数据库转储相同的示例。

我无法在内存中构建我的整个回复然后发送它。

HTTP 1.1 标准有助于使用分块传输编码:我什至不需要在开始发送回复之前知道最终大小。 所以这些用法并没有被排除在 HTTP 1.1 之外。


我终于找到了一个可能的解决方案:HTTP 1.1 尾部标头 https://www.rfc-editor.org/rfc/rfc2616#section-14.40.

在分块编码主体中,HTTP 1.1 允许发送方以标头块的形式在最后一个(空)块之后添加数据。 该规范暗示了一些用例,例如动态计算正文的 md5,并在正文之后发送它,以便客户端可以检查其完整性。

我认为它可以用于错误报告,即使我还没有发现任何关于这种用法的信息。

我看到的问题是:

  • 这需要使用分块编码(但这不是什么大问题)
  • 预告片的支持可能非常低:
  • 服务器端(可以通过手动创建分块编码来绕过它,但由于它是在内容编码(gzip)之后应用的,因此需要大量重新实现)
  • 客户端(仅修复的错误2010年卷曲 http://curl.haxx.se/changes.html例如)
  • 以及代理(如果实施不当,可能会丢失预告片)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP:200 OK 状态代码后回复期间出错 的相关文章

  • 下载前获取文件大小并计算已下载的文件大小 (http+ruby)

    谁能帮我 get the 之前的文件大小我开始下载 显示多少 已下载 require net http require uri url http www onalllevels com 2009 12 02TheYangShow Squid
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • Unicorn + Rails + 大型上传

    我试图在使用 Rails 在 Heroku 上运行 Unicorn 时允许进行大型上传 但我意识到任何大型上传可能需要比 Unicorn 工作线程的超时时间更长的时间 这意味着 我见过这种情况发生 Unicorn 主进程将杀死上传大文件的工
  • IFormFile 未由 dropzone uploadMultiple 请求填充

    我遇到的问题是 IFormFile 列表没有填充给定的文件 但是当我调用 HttpContext Request Form Files 时然后我就可以访问这些文件了 我更喜欢使用 IFormFile 因为它似乎是新的 Dotnet core
  • HTTP 响应可以省略 Reason-Prase 吗?

    正常的 HTTP 响应如下所示 HTTP 1 0 200 OK 可以省略什么吗RFC http www w3 org Protocols rfc2616 rfc2616 sec6 html称为原因短语 就像是 HTTP 1 0 200 RF
  • 如何知道 HTTP 服务器何时完成发送数据

    我正在开发一个面向浏览器 代理的项目 我需要下载网页 向 Web 服务器发送自定义 HTTP 请求后 我开始监听服务器响应 读取响应时 我检查响应标头中的 Content Length row 如果我得到其中之一 很容易确定服务器何时完成发
  • HTTP 接受“级别”?

    我一直在阅读HTTP 1 1 标头 http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 1在第 14 1 节 接受 的一些示例标头中 他们使用accept extension
  • 如何在纯 HTML 页面中返回特定的 HTTP 状态代码

    Google 建议当网站暂时不可用时返回 503 HTTP 响应 我有一些纯 HTML 网站 如何在纯 HTML 网站中返回 503 状态 我使用的是带有 Apache 的 Linux 机器 您必须在服务器上而不是在 HTML 文件中设置状
  • AddressAccessDeniedException :无需 netsh 即可解决它?

    我遇到了异常AddressAccessDeniedException因为我的processus没有注册URL的权限 我首先以管理员身份运行我的程序 好的 它成功了 但我现在想要分发我的应用程序 并且我希望每个用户都能够运行它 而不必成为管理
  • 如何使用 Node.js 和 Axios 将文件上传到 AWS 中的预签名 URL?

    我有下一个场景 通过 AWS SDK 生成用于文件上传的签名 URL 尝试使用axios 或request npm包上传本地文件 但每次我都会出错 Status 403状态文本 禁止
  • iPhone - 从网络服务器获取文件的上次修改日期

    我想检查网络服务器上文件的上次修改日期 任何帮助都会很棒 谢谢 NSURLRequest request NSURLRequest alloc initWithURL aURL NSHTTPURLResponse response NSUR
  • 发送压缩文件 Spring

    我想通过我的 spring 控制器发送一个已经存在的压缩文件 但我不断收到这些错误消息org springframework web HttpMediaTypeNotAcceptableException Could not find ac
  • 有没有办法测量 Java (Servlet) I/O 流量?

    我尝试做的是使用以下代码实现 servlet 过滤器 int up request getContentLength if HttpServletRequest request getQueryString null up Math max
  • 从express.js 中删除所有标头

    我正在创建一个页面 其中有一些数据可以由另一个设备解析 我曾经使用 php 执行此操作 但现在将其移至 Node js 我需要从页面中删除所有标题 这样我就只有我的输出 此输出是对 GET 请求的响应 此刻我有 HTTP 1 1 200 O
  • 如何在C++中使用Curl获取HTTP响应字符串

    我对 HTTP 命令和 libcurl 库非常陌生 我知道如何获取 HTTP 响应代码 但不知道如何获取 HTTP 响应字符串 以下是我为获取响应代码而编写的代码片段 任何有关如何获取响应字符串的帮助将不胜感激 curl easy seto
  • “双点”可以作为 URL 路径部分的一部分吗

    在 URL 中使用父目录双点是否有效且安全 如下例所示 http example com path to file jpg RFC3986 https www rfc editor org rfc rfc3986定义 URI 它描述了路径如
  • 在 Ubuntu 12.04 上的 Apache 上配置 SVN 服务器

    我正在尝试通过 HTTP 访问现有的 Subversion 服务器 我的dav svn conf文件看起来像

随机推荐

  • wordpress:polylang 插件的媒体库问题

    我正在使用 Wordpress 开发一个网站 其中使用 Polylang 插件为多种不同语言制作内容 我使用 Polylang 来表示两种语言 荷兰语 主要 和英语 次要 当我在荷兰语页面上传图像时 一切都很好 但是当我创建一个英文页面 并
  • 使用 PIL 的 ImageDraw 模块

    我正在尝试使用 PIL 的 ImageDraw 模块进行单独的像素操作 下面的代码应该创建 Tkinter 画布小部件 然后打开一张图像 将一个像素的颜色更改为红色 然后将图像嵌入到画布小部件中 但是 它似乎不起作用 My Code imp
  • 如何在 Visual Studio 2012 中编辑 SSRS 2008R2 报告?

    我是一名报告编写者 能够在 Visual Studio 2008 中编辑 更新报告 我们使用 SSRS2008R2 我刚刚安装了 Visual Studio 2012 当我去转换我的报告项目时 它无法工作 因为我似乎缺少一个组件 本质上 项
  • Kafka 连接集群设置或启动连接工作线程

    我正在通过 kafka connect 我正在尝试了解这些概念 假设我已经设置了 kafka 集群 节点 k1 k2 和 k3 并且它正在运行 现在我想在不同节点 例如 c1 和 c2 中以分布式模式运行 kafka 连接工作程序 几个问题
  • 从未在数据库上显式调用 Close

    我有一个来自 sqlite 数据库的列表视图 我在几个不同的点调用 fillData 来更新列表视图 private void fillData readDatabase open Cursor itemsCursor readDataba
  • 在Android模拟器中,是否可以注意到振动效果?

    很简单的问题 是否可以注意到 Android 模拟器中的振动 我猜你想知道是否发生了振动 如果是这样 请查看模拟器中的 logcat 中的振动消息
  • Delphi 2010 中的 Indy IdHttp Post 问题

    我对 Indy IdHttp Post 方法有问题 使用 Delphi 2007 编译的函数 CallRpc 工作正常 但使用 Delphi 2010 编译的相同代码会引发异常 当我将 Delphi 2007 Indy TIdHttp 更改
  • 使用 Swift 3 停止预定定时器,即使定时器为零,定时器也会继续触发

    我们调用startTimer函数来启动一个定时器 当我们想要停止它时 我们调用 stopTimerTest 函数 但在调用 stopTimer 函数后 timerTestAction 继续触发 为了检查计时器条件 我们使用 print 并在
  • 通过引用设置接口参数

    我很难理解如何设置作为指针传递的接口值 我正在尝试完成以下任务 import fmt var Stuff map string interface func main var num int Stuff key 9001 get key n
  • 在asp.net mvc中一次更新多条记录

    我正在尝试使用制作一个网站asp net mvc 4 EF6我想一次更新多行 但由于某种原因 它不起作用 我收到这样的错误 System NullReferenceException 未将对象引用设置为对象的实例 这是我的代码 控制器 Ht
  • 展平 JavaScript 对象以作为查询字符串传递

    我有一个 javascript 对象 需要将其展平为字符串 以便可以作为查询字符串传递 我该怎么做 IE cost 12345 insertBy testUser 会成为cost 12345 insertBy testUser 我不能使用
  • 在 Scala / Spark 中将文件从一个文件夹移动到 HDFS 上的另一个文件夹

    我有两个路径 一个用于文件 一个用于文件夹 我想将文件移动到 HDFS 上的该文件夹中 我怎样才能在 Scala 中做到这一点 我也在用 Spark 如果相同的代码也适用于 Windows 路径 就像在 HDFS 上读取 写入文件一样 但不
  • 对 WTForms form.errors 字典进行排序

    forms errors 字典似乎是按字段名称排序的 而不是按 它们在表格本身中声明的顺序 E g class ProductForm Form code TextField Code validators Required descrip
  • 构建错误 -Ionic Cordova 在 Android 上失败 [重复]

    这个问题在这里已经有答案了 运行命令 ionic cordova build android stacktrace 时出现以下错误 generateDebugResources mergeDebugResources processDebu
  • 为什么 std::queue 不支持 clear() 函数?

    我有一个要求 对于一个函数 我将输入作为数字流 我的意思是 该函数在每次调用中都会继续使用单个数字进行调用 我在用std queue用于存储数字流 仅当满足某些条件时 我才需要处理一组收集的数字 如果不满足条件 我需要将所有元素放入队列中
  • 如何通过 Alchemy gcc 编译 ffmpeg?

    所以我创建了ffmpeg配置文件 使其成为纯C 平台无关 但只是理论上 所以我的配置很简单 0 6 1 0 6 3测试过 configure disable doc disable ffplay disable ffprobe disabl
  • CSS 网格布局最大内容在 Firefox 中无法按预期工作

    我使用 CSS 网格布局来创建页面的基本布局 并且我最初是在 Chrome 中工作的 我现在也在 Firefox 中对此进行了测试 并注意到一些我不理解的行为 并且似乎不符合我所理解的规范 我创建了一个显示该行为的简化示例 问题是搜索标题
  • Android 和 CommaTokenizer

    我需要一个 Tokenizer 用于 AutoCompleteTextview 它可以执行以下操作 当两个单词以空白字符分隔时 必须按原样进行识别 当用换行符分隔时 两个单词也必须被识别 按下 Enter 键 1 正在工作 但我怎样才能完成
  • laravel - 无法在控制器构造函数中获取会话

    在新的 Laravel 中 我无法在构造函数中获取会话 为什么 public function construct dd Session all this is empty array 然后下面 public function index
  • HTTP:200 OK 状态代码后回复期间出错

    作为 HTTP 1 1 服务器 我使用 200 OK 状态代码回复 GET 请求 然后开始将数据发送到客户端 在此发送过程中 发生错误 我无法完成 我无法发送新的状态代码 因为最终状态代码已发送 我应该如何让客户端知道发生了错误并且我无法继