#google-chrome-extension
#google-chrome-extension
Вопрос:
В моем расширении Chrome я слушаю onBeforeRequest
и есть загадка с одним доменом: https://www.vinyl-digital.com /
Проблема: tabId === -1
вместо действительного идентификатора вкладки в прослушивателе. Также type === xmlhttprequest
появляется, хотя это определенно не запрос XHR:
chrome.webRequest.onBeforeRequest.addListener()
frameId: -1
initiator: "https://www.vinyl-digital.com"
method: "GET"
parentFrameId: -1
requestId: "586533"
tabId: -1
timeStamp: 1554487869165.11
type: "xmlhttprequest"
url: "https://www.vinyl-digital.com/"
Я хотел бы знать возможную причину этого -1 и как начать получать действительные идентификаторы.
Чтобы воспроизвести это, я создал новый профиль Chrome, добавил свое расширение, на новой вкладке ввел URL-адрес и нажал Enter. Первый и единственный раз, когда tabId
является допустимым (!) числом. Во всех остальных случаях я получаю -1 и «xmlhttprequest».
Chrome 73.0.3683.86 (официальная сборка) (64-разрядная версия) Win 7
Комментарии:
1. При первом посещении сайта установите service worker, который обрабатывает последующие запросы и выдает XHRS из своего контекста, который не является вкладкой, поэтому идентификатор равен -1 в соответствии с документацией WebRequest.
2. @wOxxOm Ваша помощь, как всегда, ценна, спасибо! Я приму ваш ответ, как только вы его добавите.
Ответ №1:
При первом посещении сайта установите service worker (вы можете увидеть его в devtools -> Вкладка приложения), который обрабатывает последующие запросы и выдает XHRS из своего контекста, который не является вкладкой, поэтому идентификатор -1
соответствует документации WebRequest:
tabId
: Идентификатор вкладки, на которой выполняется запрос.
Установите значение -1, если запрос не связан с вкладкой.
Комментарии:
1. Возможно ли узнать, с какого сайта / вкладки был запущен service worker? Без знания источника запроса вряд ли возможно применить многие требуемые алгоритмы в onBeforeRequest.