内容长度被剥离
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 样式的内容