Ruby Sinatra文件流化的内容长度

Ruby Sinatra文件流化的内容长度,ruby,apache,sinatra,passenger,Ruby,Apache,Sinatra,Passenger,我试图在将文件流式输出到客户端之前设置内容长度头。我将其设置为: response.headers['Content-Length'] = "12341234" 然后我做了一些类似的事情: steam do |out| file_chunks.each do |chunk| out << chunk end out.close end steam do | out| 文件块。每个do块| out这是一个Sinatra问题。其流API仅支持基于Event

我试图在将文件流式输出到客户端之前设置内容长度头。我将其设置为:

response.headers['Content-Length'] = "12341234"
然后我做了一些类似的事情:

steam do |out|
   file_chunks.each do |chunk|
     out << chunk
   end
   out.close
end
steam do | out|
文件块。每个do块|

out这是一个Sinatra问题。其流API仅支持基于EventMachine的服务器。换句话说,API只支持精简。使用Passenger时,您应该绕过Sinatra stream API,并且应该使用直接流式传输HTTP响应,这是Phusion Passenger支持的。这演示了如何使用机架套接字劫持API在Phusion Passenger上传输服务器发送的事件。

这是Sinatra的问题。其流API仅支持基于EventMachine的服务器。换句话说,API只支持精简。使用Passenger时,您应该绕过Sinatra stream API,并且应该使用直接流式传输HTTP响应,这是Phusion Passenger支持的。这演示了如何使用机架套接字劫持API在Phusion Passenger上传输服务器发送的事件。

这里的问题是,在使用传输编码:chunked时,忽略了内容长度标题


请参阅:

这里的问题是,在使用传输编码:chunked时,将省略内容长度标题


请参阅:

您不应该使用
request['content-length']
设置它吗。响应是您从请求中得到的结果。您不应该将其设置为
request['content-length']
。响应是您从请求中得到的结果。