diff --git a/lib/rollbar/request_data_extractor.rb b/lib/rollbar/request_data_extractor.rb index f8fbcf00..345b8631 100644 --- a/lib/rollbar/request_data_extractor.rb +++ b/lib/rollbar/request_data_extractor.rb @@ -8,6 +8,8 @@ module Rollbar module RequestDataExtractor + ALLOWED_HEADERS_REGEX = /^HTTP_|^CONTENT_TYPE$|^CONTENT_LENGTH$/ + def extract_person_data_from_controller(env) if env.has_key?('rollbar.person_data') person_data = env['rollbar.person_data'] || {} @@ -92,7 +94,7 @@ def rollbar_request_method(env) end def rollbar_headers(env) - env.keys.grep(/^HTTP_/).map do |header| + env.keys.grep(ALLOWED_HEADERS_REGEX).map do |header| name = header.gsub(/^HTTP_/, '').split('_').map(&:capitalize).join('-') if name == 'Cookie' {} diff --git a/spec/rollbar/request_data_extractor_spec.rb b/spec/rollbar/request_data_extractor_spec.rb index c37bd3f3..cc9c22a9 100644 --- a/spec/rollbar/request_data_extractor_spec.rb +++ b/spec/rollbar/request_data_extractor_spec.rb @@ -97,6 +97,25 @@ class ExtractorDummy expect(result).to be_kind_of(Hash) end + + context 'with CONTENT_TYPE and CONTENT_LENGTH headers' do + let(:env) do + Rack::MockRequest.env_for('/', + 'HTTP_HOST' => 'localhost:81', + 'HTTP_X_FORWARDED_HOST' => 'example.org:9292', + 'CONTENT_TYPE' => 'application/json', + 'CONTENT_LENGTH' => 20) + + + end + + it 'adds the content type header to the headers key' do + result = subject.extract_request_data_from_rack(env) + + expect(result[:headers]['Content-Type']).to be_eql('application/json') + expect(result[:headers]['Content-Length']).to be_eql(20) + end + end end end end