Sinatra 응용 프로그램을 통해 원격 파일을 프록시하려고합니다. 원격 소스의 헤더를 사용하여 HTTP 응답을 클라이언트로 다시 스트리밍해야하지만 Net::HTTP#get_response
이 제공하는 블록 내부에서 스트리밍 API를 사용하는 동안 응답 헤더를 설정하는 방법을 알 수 없습니다.헤더가있는 Sinatra 스트리밍 응답
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
을 그리고이 오류가 발생합니다 :
예를 들어,이 응답 헤더를 설정하지 않습니다 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