内容长度被剥离

Posted

技术标签:

【中文标题】内容长度被剥离【英文标题】:Content-Length is being stripped 【发布时间】:2011-07-30 00:24:38 【问题描述】:

我正在使用 webpy 0.34、python 2.6.6。我也在使用 mimerender。我试图在我的 http 响应中包含内容长度,但由于某种原因,标头已被删除。我说删除是因为我可以很好地创建自定义标头,并且我可以在客户端上看到这些标头。但是当我尝试设置内容长度时,标头永远不会到达客户端。我尝试在 web.created 对象中包含标题(如图所示),我也尝试过使用

web.header('Content-Length', len(data))

我做错了什么和/或不了解这段代码的工作原理?

render_json = lambda **args: json.JSONEncoder().encode(args)

class MyHandler:
    @mimerender(
            default = 'json',
            json = render_json,
            )
    def POST(self):
        data = "abcd"
        raise web.created(data, headers='Content-Length': len(data))

【问题讨论】:

注意,你打错了标签——你使用的是 web.py,但是你添加了 web2py 标签(它们不是同一个框架)。 【参考方案1】:

如果数据以分块形式发送(Transfer-Encoding: chunked),则必须省略 Content-Length 标头,as per RFC 2616:

    [剪辑]
    如果存在传输编码头字段(第 14.41 节)并且 具有除“identity”以外的任何值,则传输长度为 通过使用“分块”传输编码(第 3.6 节)定义, 除非通过关闭连接来终止消息。
    如果存在 Content-Length 标头字段(第 14.13 节),则其 OCTET 中的十进制值表示实体长度和 传输长度。不得发送 Content-Length 标头字段 如果这两个长度不同(即,如果传输编码 头字段存在)。如果同时收到一条消息 Transfer-Encoding 头域和一个 Content-Length 头域, 后者必须被忽略。

【讨论】:

这正是正在发生的事情。谢谢!

以上是关于内容长度被剥离的主要内容,如果未能解决你的问题,请参考以下文章

Angular:清理 HTML 剥离了一些 CSS 样式的内容

Javascript评论剥离器[关闭]

php 从内容区域中仅图像的行中剥离P标记

ActiveAdmin剥离花括号内的内容

php 从提供的内容中生成摘录。剥离HTML,删除尾随标点符号,并在删除文本时添加“更多”字符串。

innerHTML 剥离动态添加的字符