【发布时间】:2014-06-05 11:59:30
【问题描述】:
在 Sinatra 中,如何覆盖响应中的 Content-Length 标头以设置我自己的值?
我方法的最后一行返回以下内容:
[200, {'Content-Type' => component.content_type,
'Content-Length' => component.content_length.to_s}, component.content.data]
我希望通过这种方式覆盖内容值,但会导致异常:
Unexpected error while processing request: Content-Length header was 2, but should be 0
我想为内容长度返回一个不同的值。有没有办法做到这一点?
【问题讨论】:
-
你为什么要覆盖内容长度——这肯定只会导致问题。行为取决于您使用的服务器(我无法重现您在 Sinatra 使用的任何默认服务器上看到的错误)。你想做什么?
-
在这种情况下,用户代理是一个 SAP 系统,它正在查询数据并期望文档的长度,而不是文档本身,即它以自己的方式解释数据。我正在使用 Thin,如果这有什么不同的话,虽然我认为 Rack 正在处理内容长度的添加,但据我所知,它有一个中间件,我还没有完全掌握。