如何使用应用程序/ x-www-form-urlencoded头和URLSearchParams使用isomorphic-fetch进行POST

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

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

我试图重现这个请求使用同构获取 。

我试过这个:

 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状态码错误响应( 需要的长度 )

有关URLSearchParamsFetch更多信息:

获取文档

取指标

有什么build议么?

假设服务器实现是正确的,那么这里的问题是同构获取(或者更有可能的是,底层的GitHub的WHATWG Fetch填充),因为它没有添加Content-Length头部,因为它需要固定长度的主体取标准。

(您也应该能够省略Content-Type头,因为这也应该从URLSearchParams对象推断出来,并由API的实现添加)。