Нет способа определить это внутри Workbox или внутри сервисного работника.(Я также не уверен, почему вы захотите?)
Одна вещь, которую вы можете сделать, однако, это добавить дополнительный заголовок запроса, когда вы делаете запрос, а затемпроверьте этот заголовок внутри вашего сервисного работника.Если вам действительно важно различать запросы, отправленные через XHR и va fetch()
, вы можете использовать для этого заголовок.
Внутри вашего веб-приложения:
const request = new Request('/api', {headers: {'X-Source': 'fetch'}});
const response = await fetch(request);
Внутри вашегослужащий, используя Workbox :
workbox.routing.registerRoute(
// This matchCallback will only be true if the request
// has an X-Source header set to 'fetch':
({event}) => event.request.headers.get('X-Source') === 'fetch',
workbox.strategies.networkOnly()
);
Обратите внимание, что если вы делаете запрос cors
, вам может потребоваться удалить этот заголовок запроса X-Source
перед отправкой его всеть, так как дополнительные заголовки запроса могут запускать предварительные проверки CORS .