Workbox: найти запрос XHR или получить - PullRequest
0 голосов
/ 21 февраля 2019

Есть ли способ узнать, является ли запрос XHR или выборкой при использовании Workbox.

const matchCb = ({url, event}) => {
    if(event.type === 'xhr')
    {
    return true;
    }
    return false;
};
workbox.routing.registerRoute(
    matchCb,
    workbox.strategies.networkOnly()
);

Я поставил галочку, чтобы вышеуказанный маршрут использовался только для вызовов XHR.Несмотря на то, что на вкладке сети браузера отображается определенный запрос типа xhr, он должен быть получен при отладке вышеуказанного кода.Я делаю что-то неправильно?Есть ли другой способ проверить это?

1 Ответ

0 голосов
/ 22 февраля 2019

Нет способа определить это внутри 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 .

...