gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 15:11:08 25 4
gpt4 key购买 nike

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

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

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

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

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

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

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

最佳答案

我终于找到了一个可能的解决方案: HTTP 1.1 Trailer headers .

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

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

我看到的问题是:

  • 这需要使用分块编码(但这不是什么大问题)
  • 预告片支持可能非常低:
  • 服务器端(它可以通过手动创建分块编码来绕过,但由于它是在内容编码 (gzip) 之后应用的,因此需要大量的重新实现)
  • 客户端(例如仅在 2010 in curl 中修复的错误)
  • 和代理(如果实现不当可能会丢失预告片)

关于HTTP:200 OK 状态代码后回复期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com