From ab3d7f82ea6a96829313cce4b28c935ddfa6ede6 Mon Sep 17 00:00:00 2001 From: YusukeIwaki Date: Wed, 20 Apr 2022 11:31:15 +0900 Subject: [PATCH] fix: get extra headers from Fetch.requestPaused event --- lib/puppeteer/network_manager.rb | 8 ++++++++ spec/integration/request_interception_spec.rb | 1 + 2 files changed, 9 insertions(+) diff --git a/lib/puppeteer/network_manager.rb b/lib/puppeteer/network_manager.rb index dc2c1dc9..59b83205 100644 --- a/lib/puppeteer/network_manager.rb +++ b/lib/puppeteer/network_manager.rb @@ -217,6 +217,7 @@ def request_interception=(enabled) # CDP may have sent a Fetch.requestPaused event already. Check for it. if_present(@network_event_manager.get_request_paused(network_request_id)) do |request_paused_event| fetch_request_id = request_paused_event['requestId'] + patch_request_event_headers(event, request_paused_event) handle_request(event, fetch_request_id) @network_event_manager.forget_request_paused(network_request_id) end @@ -277,12 +278,19 @@ def request_interception=(enabled) end if request_will_be_sent_event + patch_request_event_headers(request_will_be_sent_event, event) handle_request(request_will_be_sent_event, fetch_request_id) else @network_event_manager.store_request_paused(network_request_id, event) end end + private def patch_request_event_headers(request_will_be_sent_event, request_paused_event) + request_will_be_sent_event['request']['headers'].merge!( + # includes extra headers, like: Accept, Origin + request_paused_event['request']['headers']) + end + private def handle_request(event, fetch_request_id) redirect_chain = [] if event['redirectResponse'] diff --git a/spec/integration/request_interception_spec.rb b/spec/integration/request_interception_spec.rb index c7836b44..50ff9a19 100644 --- a/spec/integration/request_interception_spec.rb +++ b/spec/integration/request_interception_spec.rb @@ -12,6 +12,7 @@ expect(request.url).to include('/empty.html') expect(request.headers['user-agent']).not_to be_nil + expect(request.headers['accept']).not_to be_nil expect(request.method).to eq('GET') expect(request.post_data).to be_nil expect(request.navigation_request?).to eq(true)