Javascript: как загрузить большой файл по HTTP с помощью заголовка кодировки передачи - PullRequest
0 голосов
/ 06 июля 2018

У нас есть сторонний API для загрузки файла, который требует, чтобы заголовок Transfer-Encoding был установлен на chunked , но этот заголовок игнорируется из заголовка, если я установил его вручную, используя xhr.setRequestHeader .После изучения этого вопроса мы обнаружили, что пользовательский агент отвечает за настройку этого заголовка, но кажется, что пользовательский агент только устанавливает заголовок Content-Length.Также, если мы загружаем файл с помощью следующей команды curl, тогда он работает нормально.

curl -X POST -H 'Transfer-Encoding: chunked' -H 'content-type: text/csv' -H 'filename: us-500.csv' -T './Downloads/us-500.csv'  http://serverapi:8090/upload

Может кто-нибудь помочь понять, есть ли другой способ загрузки большого файла с использованием заголовка Transfer-encoding.

1 Ответ

0 голосов
/ 08 августа 2019

вам не разрешено устанавливать этот заголовок, так как он контролируется пользовательским агентом.

Полный набор заголовков см. В 4.6.2. Метод setRequestHeader () из W3C XMLHttpRequest Уровень 1 и обратите внимание, что Transfer-Encoding является одним из заголовков, которые контролируются пользовательским агентом, чтобы он контролирует эти аспекты транспорта.

Accept-Charset Accept-Encoding Access-Control-Request-Headers Access-Control-Request-Method соединение Content-Length печенье Cookie2 Дата DNT ожидать хозяин Keep-Alive происхождения Referer TE трейлер Transfer-Encoding Обновить User-Agent Via

Аналогичный список есть в стандарте жизни WhatWG Fetch API. https://fetch.spec.whatwg.org/#terminology-headers

...