这是一个正常的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
的更多信息:
有什么建议吗?
答案 0 :(得分:3)
假设服务器实现是正确的,这里的问题是isomorphic-fetch(或更可能是底层GitHub的WHATWG Fetch polyfill),因为它没有添加Content-Length头,因为它需要固定长度获取标准的主体。
(您还应该能够省略Content-Type标头,因为它也应该从URLSearchParams对象推断出来,并通过API的实现添加。)