diff options
author | Marcos Casagrande <marcoscvp90@gmail.com> | 2022-10-07 13:59:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-07 13:59:30 +0200 |
commit | a5d55fe6eaa9ba32908cdff5a88215dd2466d415 (patch) | |
tree | cd14d5702f9c1b7ed98084e315a0d332f17442b8 /ext/fetch/21_formdata.js | |
parent | e136bd86b3bf0a14d3379b389a44547d332b9ca5 (diff) |
fix(ext/fetch): support empty formdata (#16165)
This PR adds support for empty `FormData` parsing in
`Response`/`Request`
```js
new Response(new FormData()).formData()
```
ref: https://github.com/web-platform-tests/wpt/issues/28607
Diffstat (limited to 'ext/fetch/21_formdata.js')
-rw-r--r-- | ext/fetch/21_formdata.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/fetch/21_formdata.js b/ext/fetch/21_formdata.js index 5532cc5a3..34103858f 100644 --- a/ext/fetch/21_formdata.js +++ b/ext/fetch/21_formdata.js @@ -393,9 +393,19 @@ * @returns {FormData} */ parse() { - // Body must be at least 2 boundaries + \r\n + -- on the last boundary. + // To have fields body must be at least 2 boundaries + \r\n + -- + // on the last boundary. if (this.body.length < (this.boundary.length * 2) + 4) { - throw new TypeError("Form data too short to be valid."); + const decodedBody = core.decode(this.body); + const lastBoundary = this.boundary + "--"; + // check if it's an empty valid form data + if ( + decodedBody === lastBoundary || + decodedBody === lastBoundary + "\r\n" + ) { + return new FormData(); + } + throw new TypeError("Unable to parse body as form data."); } const formData = new FormData(); |