Повторяющийся запрос при открытии ссылки target = "_ blank" в автономном Chrome PWA - PullRequest
0 голосов
/ 05 июля 2019

У меня есть сайт, на котором работает сервисный работник.Когда я устанавливаю веб-сайт как приложение PWA, используя Добавить на главный экран (в автономном режиме), сайт работает нормально, за исключением того, что любые target="_blank" ссылки вызывают дублирующий запрос на стороне сервера - есть два одновременных запроса, но открывается только одно окно.Это происходит даже тогда, когда у работника сервиса нет логики кэширования (обработчик выборки пуст)

  • Я вижу это на Chrome (Huawei, Android 9), а также на Chrome (Samsung, Android 6) иИнтернет-браузер Samsung - но не в iOS Safari.
  • Дублирующий запрос происходит независимо от того, реализовано ли какое-либо событие выборки в PWA или нет
  • Только одно событие отладчика фиксируется в выборке сервисного работникасобытие, fiddler видит два запроса
  • происходит только в «установленном» PWA, а не в обычном браузере или ярлыке на веб-сайте, не поддерживающем PWA
  • Ресурс не кэшируется (или должен кэшироваться)

Я создал минимальное приложение для воспроизведения, в котором я могу повторить проблему:

/index.html
/page.html
/service-worker.js
/manifest.json

index.html:

<head><link rel="manifest" href="/manifest.json"></head>
<body>
    <a href="/page.html" target="_blank">CLICK ME</a>
    <script>navigator.serviceWorker.register('/service-worker.js', { scope: '/' });</script>
</body>

manifest.json:

{
    "background_color": "#FFFFFF",
    "description": "Repro application",
    "display": "standalone",
    "name": "Repro application",
    "short_name": "Repro application",
    "start_url": "/index.html",
    "theme_color": "#FFFFFF"
}

service-worker.js:

(function () {
    'use strict';
    self.addEventListener('fetch', function (event) { });
    self.addEventListener('activate', function (event) { });
}());

Также происходит вообще без события извлечения или с событием извлечения, просто возвращающим обещание извлечения по сети (таким образом, поведение браузера по умолчанию)

page.html contenЭто не имеет значения (если его там нет, просто 404 дважды)

Только ссылки target = "_ blank" дважды попадают на сервер, "_self" работает нормально.Есть идеи, как отследить причину дополнительного удара?

...