Skip to content

Commit b9b6ca1

Browse files
kblokaslushnikov
authored andcommitted
fix(network): be able to remove headers using request.continue (#4797)
I think this was a regression caused here https://github.com/GoogleChrome/puppeteer/pull/4265/files#diff-d2ac7cb061b0c51644d0a5d6140e3a32R446 Fix #4743
1 parent 4acce55 commit b9b6ca1

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

experimental/puppeteer-firefox/lib/NetworkManager.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class Request {
158158
} = overrides;
159159
await this._session.send('Network.resumeSuspendedRequest', {
160160
requestId: this._id,
161-
headers: headers ? Object.entries(headers).map(([name, value]) => ({name, value})) : undefined,
161+
headers: headers ? Object.entries(headers).filter(([, value]) => !Object.is(value, undefined)).map(([name, value]) => ({name, value})) : undefined,
162162
}).catch(error => {
163163
debugError(error);
164164
});

lib/NetworkManager.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -723,8 +723,10 @@ class SecurityDetails {
723723
*/
724724
function headersArray(headers) {
725725
const result = [];
726-
for (const name in headers)
727-
result.push({name, value: headers[name] + ''});
726+
for (const name in headers) {
727+
if (!Object.is(headers[name], undefined))
728+
result.push({name, value: headers[name] + ''});
729+
}
728730
return result;
729731
}
730732

test/requestinterception.spec.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,24 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
7272
});
7373
await page.goto(server.PREFIX + '/rrredirect');
7474
});
75+
// @see https://github.com/GoogleChrome/puppeteer/issues/4743
76+
it('should be able to remove headers', async({page, server}) => {
77+
await page.setRequestInterception(true);
78+
page.on('request', request => {
79+
const headers = Object.assign({}, request.headers(), {
80+
foo: 'bar',
81+
origin: undefined, // remove "origin" header
82+
});
83+
request.continue({ headers });
84+
});
85+
86+
const [serverRequest] = await Promise.all([
87+
server.waitForRequest('/empty.html'),
88+
page.goto(server.PREFIX + '/empty.html')
89+
]);
90+
91+
expect(serverRequest.headers.origin).toBe(undefined);
92+
});
7593
it('should contain referer header', async({page, server}) => {
7694
await page.setRequestInterception(true);
7795
const requests = [];

0 commit comments

Comments
 (0)