Tôi muốn proxy tệp từ xa thông qua ứng dụng Sinatra. Điều này yêu cầu phát trực tuyến phản hồi HTTP với tiêu đề từ nguồn từ xa quay lại máy khách, nhưng tôi không thể tìm ra cách đặt tiêu đề phản hồi trong khi sử dụng API phát trực tiếp bên trong khối được cung cấp bởi Net::HTTP#get_response
.Phản hồi trực tuyến Sinatra với tiêu đề
Ví dụ, điều này sẽ không đặt tiêu đề phản ứng:
get '/file' do
stream do |out|
uri = URI("http://manuals.info.apple.com/en/ipad_user_guide.pdf")
Net::HTTP.get_response(uri) do |file|
headers 'Content-Type' => file.header['Content-Type']
file.read_body { |chunk| out << chunk }
end
end
end
Và kết quả này trong các lỗi: Net::HTTPOK#read_body called twice (IOError)
:
get '/file' do
response = nil
uri = URI("http://manuals.info.apple.com/en/ipad_user_guide.pdf")
Net::HTTP.get_response(uri) do |file|
headers 'Content-Type' => file.header['Content-Type']
response = stream do |out|
file.read_body { |chunk| out << chunk }
end
end
response
end