Как выполнить POST с заголовком application/x-www-form-urlencoded и URLSearchParams с использованием 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
ответ ошибки кода состояния ( требуется длина)
Подробнее о URLSearchParams
а также Fetch
Вот:
Какие-либо предложения?
1 ответ
Решение
Предполагая, что реализация сервера правильная, проблема здесь в isomorphic-fetch (или, что гораздо более вероятно, в базовом полифиле WHATWG Fetch GitHub) в том, что он не добавляет заголовок Content-Length, как это требуется для тел фиксированной длины с помощью Извлечь Стандарт.
(Вы также должны иметь возможность опустить заголовок Content-Type, так как он также должен быть выведен из объекта URLSearchParams и добавлен реализацией API.)