【问题标题】:Can I give an estimate content length header?我可以给出估计的内容长度标题吗?
【发布时间】:2017-10-12 13:13:13
【问题描述】:

我正在尝试在创建文件时(这需要几秒钟)将文件发送给用户。我可以估计它的大小到最接近的千字节。

如果我创建标头并在我的估计中添加额外的千字节(以补偿小错误),浏览器会认为下载失败。

我知道我可以完全不考虑长度,但认为用户体验没有那么好。

【问题讨论】:

    标签: php http stream http-headers


    【解决方案1】:

    RFC 7230 (https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2) 规定:

    如果发件人关闭连接或收件人之前超时 接收到指定数量的八位字节,接收者必须 认为消息不完整并关闭连接。

    这意味着 content-length 标头不能大于实际内容。

    将 content-length 标头设置为小于下载内容并没有什么意义,但我认为我们都同意这不是一个好主意。

    所以内容长度标头,惊喜 - 惊喜,应该反映下载的真实大小。

    几乎总有一种方法可以获取下载的实际大小,您确定在您的情况下这是不可能的吗?

    您不能在下载中添加填充以使其大小与标题中提到的大小完全相同?

    由于您没有告诉我们有关下载本身的任何信息,因此我真的无法提供更多帮助。

    【讨论】:

    • 是的,计算实际尺寸非常困难(可能但会导致许多秒的延迟,我认为这是不值得的)。随着下载的进行,无法更新内容长度标头?或者填充如何工作?只是在文件末尾加一堆空格来弥补缺失的字节?
    • 填充完全取决于文件内容所代表的内容。顾名思义,标头是在内容之前发送的,所以不,您在开始发送内容后无法更改它。
    • 仅供参考:如果Content-Length 小于实际消息,客户端停止从套接字读取。如果您无法事先确定该尺寸,请咨询RFC 7230, sec. 3.3.3
    猜你喜欢
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2013-07-22
    • 2014-09-12
    • 2017-05-20
    相关资源
    最近更新 更多