如何 POST 使用 application/x-www-form-urlencoded header 和 URLSearchParams 使用 isomorphic-fetch

How to POST with application/x-www-form-urlencoded header and URLSearchParams using isomorphic-fetch

这是一个工作正常的 CURL 示例:

curl --request POST \
  --url <url> \
  --header 'authorization: Bearer <authorization token>' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'category=1&userId=<uuid>'

我正在尝试使用 isomorphic-fetch 重现此请求。

我试过这个:

const searchParams = new URLSearchParams();
searchParams.set('category', category);
searchParams.set('userId', userId);

return fetch(`<url>`, {      
  method: 'POST',
  headers: {
    'Authorization: Bearer <authorization token>',
    'Accept': 'application/json',
    'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
  },
  body: searchParams
})`

但我收到 411 状态代码错误响应 (length required)

有关 URLSearchParamsFetch 的更多信息,请点击此处:

fetch documentation

fetch spec

有什么建议吗?

假设服务器实现是正确的,这里的问题是 isomorphic-fetch(或者更有可能是底层 GitHub 的 WHATWG Fetch polyfill),因为它没有添加 Content-Length header 因为 Fetch 标准要求 fixed-length 主体。

(您还应该能够省略 Content-Type header 因为它也应该从 URLSearchParams object 中推断出来并通过 [=18 的实现添加=].)