Запрос, созданный с помощью fetch или с новым Request (), имеет неопределенное тело - PullRequest
0 голосов
/ 03 июня 2019

Создание new Request() или fetch() создает Request с неопределенным Request.body.

В документах https://developer.mozilla.org/en-US/docs/Web/API/Request указано, что Request имеет body:

Цитата: "... body: простой метод получения, используемый для выставления ReadableStream содержимого тела."

(new Request('http://example.com/')).body

в консоли chrome / ff дает undefined.

С примером POST вы получите то же самое:

(new Request('http://example.com/', {
  method: 'POST', 
  body: new ReadableStream({
    pull: function(controller) {
      console.log('pull called!');
      controller.enqueue('Some data...');
    }
  })
})).body

Я ожидаю, что body будет доступен для использования от ServiceWorker до Request.body, и его действие будет зависеть от body.

Я пытался клонировать запрос. Я тестировал как контент ServiceWorker, так и обычный контекст window. Протестировано как Chrome версии 74.0.3729.169 (официальная сборка) (64-разрядная версия), так и Firefox 66.0.5 (64-разрядная версия) на Mac Mojave.

Примечание:

Это известная ошибка в хроме: https://bugs.chromium.org/p/chromium/issues/detail?id=969843 https://bugs.chromium.org/p/chromium/issues/detail?id=688906

1 Ответ

1 голос
/ 03 июня 2019

Вот объект POST-запроса, построенный с телом. Это выводит объект ReadableStream на консоль.

Если в консоли для вас выводится "undefined", пожалуйста, дайте мне знать.

Затем вы можете проверить эти заметки на веб-сайте caniuse.com:

  1. Частичная поддержка может быть включена в Firefox с помощью dom.fetch.enabled. флаг.
  2. Доступно только в Chrome и Opera в ServiceWorkers.

  3. Доступно в Chrome и Opera в Window и Workers, включив флаг «Экспериментальные возможности веб-платформы» в chrome: // flags

  4. Firefox <40 не полностью соответствует спецификациям и не уважайте тег для относительных URI в запросах на выборку. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1161625" rel="nofollow noreferrer">https://bugzilla.mozilla.org/show_bug.cgi?id=1161625

var init = {
  method: 'POST',
  body: "test=testBody"
};

var req = new Request('https://randycasburn.com', init);

console.log(req.body.constructor);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...