diff --git a/src/common/NetworkManager.ts b/src/common/NetworkManager.ts index d1d99d27839f2..a5a440114c035 100644 --- a/src/common/NetworkManager.ts +++ b/src/common/NetworkManager.ts @@ -268,6 +268,7 @@ export class NetworkManager extends EventEmitter { this._networkEventManager.getRequestPaused(networkRequestId); if (requestPausedEvent) { const { requestId: fetchRequestId } = requestPausedEvent; + this._patchRequestEventHeaders(event, requestPausedEvent); this._onRequest(event, fetchRequestId); this._networkEventManager.forgetRequestPaused(networkRequestId); } @@ -345,12 +346,24 @@ export class NetworkManager extends EventEmitter { })(); if (requestWillBeSentEvent) { + this._patchRequestEventHeaders(requestWillBeSentEvent, event); this._onRequest(requestWillBeSentEvent, fetchRequestId); } else { this._networkEventManager.storeRequestPaused(networkRequestId, event); } } + _patchRequestEventHeaders( + requestWillBeSentEvent: Protocol.Network.RequestWillBeSentEvent, + requestPausedEvent: Protocol.Fetch.RequestPausedEvent + ): void { + requestWillBeSentEvent.request.headers = { + ...requestWillBeSentEvent.request.headers, + // includes extra headers, like: Accept, Origin + ...requestPausedEvent.request.headers, + }; + } + _onRequest( event: Protocol.Network.RequestWillBeSentEvent, fetchRequestId?: FetchRequestId diff --git a/test/requestinterception.spec.ts b/test/requestinterception.spec.ts index 0bde69e013c87..8cf9c7b00f275 100644 --- a/test/requestinterception.spec.ts +++ b/test/requestinterception.spec.ts @@ -40,6 +40,7 @@ describe('request interception', function () { } expect(request.url()).toContain('empty.html'); expect(request.headers()['user-agent']).toBeTruthy(); + expect(request.headers()['accept']).toBeTruthy(); expect(request.method()).toBe('GET'); expect(request.postData()).toBe(undefined); expect(request.isNavigationRequest()).toBe(true);