如何 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)
有关 URLSearchParams
和 Fetch
的更多信息,请点击此处:
有什么建议吗?
假设服务器实现是正确的,这里的问题是 isomorphic-fetch(或者更有可能是底层 GitHub 的 WHATWG Fetch polyfill),因为它没有添加 Content-Length header 因为 Fetch 标准要求 fixed-length 主体。
(您还应该能够省略 Content-Type header 因为它也应该从 URLSearchParams object 中推断出来并通过 [=18 的实现添加=].)
这是一个工作正常的 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)
有关 URLSearchParams
和 Fetch
的更多信息,请点击此处:
有什么建议吗?
假设服务器实现是正确的,这里的问题是 isomorphic-fetch(或者更有可能是底层 GitHub 的 WHATWG Fetch polyfill),因为它没有添加 Content-Length header 因为 Fetch 标准要求 fixed-length 主体。
(您还应该能够省略 Content-Type header 因为它也应该从 URLSearchParams object 中推断出来并通过 [=18 的实现添加=].)