diff --git a/lib/reel/rack/server.rb b/lib/reel/rack/server.rb index 769a18d..eb4efaf 100644 --- a/lib/reel/rack/server.rb +++ b/lib/reel/rack/server.rb @@ -37,8 +37,12 @@ def route_request(request) :input => request.body.to_s, "REMOTE_ADDR" => request.remote_addr }.merge(convert_headers(request.headers)) - - status, headers, body = app.call ::Rack::MockRequest.env_for(request.url, options) + + # Construct full url so that rack can generate a correct environment. + # see https://github.com/rack/rack/blob/master/lib/rack/mock.rb. + url = "http://#{request.headers['Host']}#{request.url}" + + status, headers, body = app.call ::Rack::MockRequest.env_for(url, options) if body.respond_to?(:to_str) request.respond status_symbol(status), headers, body.to_str