From ff49c41715a268e4946b18531946e0b04e7624ed Mon Sep 17 00:00:00 2001 From: Maxim Shirshin Date: Tue, 9 Nov 2021 16:35:11 +0100 Subject: [PATCH] Fix logical operator priority (regression) to disallow GET/HEAD with non-empty body --- src/request.js | 2 +- test/request.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/request.js b/src/request.js index 6d6272cb7..37afb6f42 100644 --- a/src/request.js +++ b/src/request.js @@ -60,7 +60,7 @@ export default class Request extends Body { method = method.toUpperCase(); // eslint-disable-next-line no-eq-null, eqeqeq - if (((init.body != null || isRequest(input)) && input.body !== null) && + if ((init.body != null || (isRequest(input) && input.body !== null)) && (method === 'GET' || method === 'HEAD')) { throw new TypeError('Request with GET/HEAD method cannot have body'); } diff --git a/test/request.js b/test/request.js index de4fed1fa..527fab9d4 100644 --- a/test/request.js +++ b/test/request.js @@ -123,6 +123,8 @@ describe('Request', () => { .to.throw(TypeError); expect(() => new Request(base, {body: 'a', method: 'head'})) .to.throw(TypeError); + expect(() => new Request(new Request(base), {body: 'a'})) + .to.throw(TypeError); }); it('should throw error when including credentials', () => {