Как выполнить 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.)

Другие вопросы по тегам