From d183d364a03045dca4d8d67fcb983e66958b75d1 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 22 Oct 2021 16:52:49 -0700 Subject: [PATCH] fix(fetch): remove content-length from redirected post requests (#9728) --- packages/playwright-core/src/server/fetch.ts | 1 + tests/global-fetch.spec.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/packages/playwright-core/src/server/fetch.ts b/packages/playwright-core/src/server/fetch.ts index b4c93ebc12..84435874e3 100644 --- a/packages/playwright-core/src/server/fetch.ts +++ b/packages/playwright-core/src/server/fetch.ts @@ -226,6 +226,7 @@ export abstract class FetchRequest extends SdkObject { postData = undefined; delete headers[`content-encoding`]; delete headers[`content-language`]; + delete headers[`content-length`]; delete headers[`content-location`]; delete headers[`content-type`]; } diff --git a/tests/global-fetch.spec.ts b/tests/global-fetch.spec.ts index a2b6999026..460ebf439f 100644 --- a/tests/global-fetch.spec.ts +++ b/tests/global-fetch.spec.ts @@ -210,3 +210,21 @@ it('should abort redirected requests when context is disposed', async ({ playwri expect(result.message).toContain('Request context disposed'); await connectionClosed; }); + +it('should remove content-length from reidrected post requests', async ({ playwright, server }) => { + server.setRedirect('/redirect', '/empty.html'); + const request = await playwright.request.newContext(); + const [result, req1, req2] = await Promise.all([ + request.post(server.PREFIX + '/redirect', { + data: { + 'foo': 'bar' + } + }), + server.waitForRequest('/redirect'), + server.waitForRequest('/empty.html') + ]); + expect(result.status()).toBe(200); + expect(req1.headers['content-length']).toBe('13'); + expect(req2.headers['content-length']).toBe(undefined); + await request.dispose(); +});