Заголовок «Content-Length» не включен в ответ от выборки работника сервиса - PullRequest
0 голосов
/ 12 июня 2019

Я выбираю статические ресурсы (изображения, PDF-файлы и т. Д.) Из AWS S3 и показываю их загрузку клиенту, используя API-интерфейс сервисного работника.Для этого я читаю заголовок «content-length» в ответе.В Chrome Canary (77.0.3821.0) это работает нормально, но в Firefox (версия 67.0) и Chrome (версия 75.0.3770.80) в ответе отсутствует заголовок «content-length».

ЭтоОтвет на SO был полезен при установке request.mode на «cors», что дало мне некоторый первоначальный успех, но до сих пор это работает только в Chrome Canary.

function respondWithProgressMonitor(clientId, response) {
  for (const key of response.headers.keys()) {
    console.log(key); // returns only "content-type" and "last-modified" on chrome and firefox, but in Chrome Canary includes "content-length"
  }

  const contentLength = response.headers.get('content-length');

  // ...
}
function fetchWithProgressMonitor(event) {
  const request = new Request(event.request.clone(), {
    mode: 'cors',
    credentials: 'omit',
  });
  return fetch(request).then(response => respondWithProgressMonitor(event.clientId, response));
}

Мой контейнер S3Правила конфигурации CORS должны показывать заголовок, если я не делаю что-то не так.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <CORSRule>

    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>Content-Length</ExposeHeader>
  </CORSRule>
</CORSConfiguration>

Я не уверен, почему заголовок content-length выставляется в ответе Canary, но не в текущем выпуске Chrome илиFire Fox.Есть ли какие-то другие опции, которые мне нужно включить в мой запрос, чтобы получить в ответе заголовок «content-length»?Любые идеи или темы, которым нужно следовать, очень ценятся.

...