Подтвердить что ты не робот

Angular Service Worker - Не удалось загрузить ресурс: сервер ответил на статус 504 (Gateway Timeout)

Я использую Angular -CLI 1.6.6 и @angular/service-worker 5.2.5 в нашем приложении Angular 5.2.5. Все работает нормально на локальном Lite-сервере, а также на рабочем сервере, за исключением одного сообщения об ошибке, появляющегося в нашей рабочей среде:

Failed to load resource: the server responded with a status of 504 (Gateway Timeout)

Заглядывая в ngsw-worker.js script, я нашел строки (2466), где генерируется сообщение об ошибке:

async safeFetch(req) {
    try {
        return await this.scope.fetch(req);
    }
    catch (err) {
        this.debugger.log(err, `Driver.fetch(${req.url})`);
        return this.adapter.newResponse(null, {
            status: 504,
            statusText: 'Gateway Timeout',
        });
    }
} 

Ошибка регистрации в консоли в журнале catch выдает следующую ошибку:

TypeError: Failed to execute 'fetch' on 'ServiceWorkerGlobalScope': 'only-if-cached' can be set only with 'same-origin' mode
    at Driver.safeFetch (ngsw-worker.js:2464)
    at Driver.handleFetch (ngsw-worker.js:1954)
    at <anonymous>

Ошибка, которая, по-видимому, связана с этим вопросом: Что приводит к сбою "выборки" в "ServiceWorkerGlobalScope" : "only-if-cached" может быть задано только с "одинаковыми" -origin 'mode error?

Req, генерирующий эту ошибку, - это любой первый доступ к приложению:

https://example.com/test/#/connect
https://example.com/test/#/map?token=[accestoken]
...

При перезагрузке приложения ошибка не повторяется.

Может кто-нибудь помочь мне здесь? Есть ли ошибка в safeFetch() сервисного работника (возможно, для поддержки HashLocationStrategy)? Мне нужно что-то изменить в моей конфигурации?

4b9b3361

Ответ 1

Отключение заголовка ETag из бэкэнда временно решило эту проблему.