From 799e7c9267f04ad77fc1f6186f6e67e3aeea5592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dari=CC=81o=20Kondratiuk?= Date: Fri, 2 Aug 2019 19:27:58 -0300 Subject: [PATCH 1/2] test(network): be able to remove headers using request.continue --- .../puppeteer-firefox/lib/NetworkManager.js | 2 +- lib/NetworkManager.js | 3 ++- test/requestinterception.spec.js | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/experimental/puppeteer-firefox/lib/NetworkManager.js b/experimental/puppeteer-firefox/lib/NetworkManager.js index deb4e2d950471..4ff57bb2c3149 100644 --- a/experimental/puppeteer-firefox/lib/NetworkManager.js +++ b/experimental/puppeteer-firefox/lib/NetworkManager.js @@ -158,7 +158,7 @@ class Request { } = overrides; await this._session.send('Network.resumeSuspendedRequest', { requestId: this._id, - headers: headers ? Object.entries(headers).map(([name, value]) => ({name, value})) : undefined, + headers: headers ? Object.entries(headers).filter(([, value]) => !Object.is(value, undefined)).map(([name, value]) => ({name, value})) : undefined, }).catch(error => { debugError(error); }); diff --git a/lib/NetworkManager.js b/lib/NetworkManager.js index 37a59d057c059..2beb017cebabe 100644 --- a/lib/NetworkManager.js +++ b/lib/NetworkManager.js @@ -724,7 +724,8 @@ class SecurityDetails { function headersArray(headers) { const result = []; for (const name in headers) - result.push({name, value: headers[name] + ''}); + if(!Object.is(headers[name], undefined)) + result.push({name, value: headers[name] + ''}); return result; } diff --git a/test/requestinterception.spec.js b/test/requestinterception.spec.js index ffd777a37f8cb..b531130c87b5b 100644 --- a/test/requestinterception.spec.js +++ b/test/requestinterception.spec.js @@ -72,6 +72,24 @@ module.exports.addTests = function({testRunner, expect, CHROME}) { }); await page.goto(server.PREFIX + '/rrredirect'); }); + // @see https://github.com/GoogleChrome/puppeteer/issues/4743 + it('should be able to remove headers', async({page, server}) => { + await page.setRequestInterception(true); + page.on('request', request => { + const headers = Object.assign({}, request.headers(), { + foo: 'bar', + origin: undefined, // remove "origin" header + }); + request.continue({ headers }); + }); + + const [serverRequest] = await Promise.all([ + server.waitForRequest('/empty.html'), + page.goto(server.PREFIX + '/empty.html') + ]); + + expect(serverRequest.headers.origin).toBe(undefined); + }); it('should contain referer header', async({page, server}) => { await page.setRequestInterception(true); const requests = []; From 9311c5e8c1706ace4da2142dc7ae90fed6e606be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dari=CC=81o=20Kondratiuk?= Date: Fri, 2 Aug 2019 19:34:34 -0300 Subject: [PATCH 2/2] You shall run the linter --- lib/NetworkManager.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/NetworkManager.js b/lib/NetworkManager.js index 2beb017cebabe..ea7ce4f542c4b 100644 --- a/lib/NetworkManager.js +++ b/lib/NetworkManager.js @@ -723,9 +723,10 @@ class SecurityDetails { */ function headersArray(headers) { const result = []; - for (const name in headers) - if(!Object.is(headers[name], undefined)) + for (const name in headers) { + if (!Object.is(headers[name], undefined)) result.push({name, value: headers[name] + ''}); + } return result; }