Я выбираю статические ресурсы (изображения, 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»?Любые идеи или темы, которым нужно следовать, очень ценятся.