Я работаю над расширением chrome, в котором вы обнаруживаете загрузку, а затем отменяете ее, вся работа выполняется с помощью API webRequest, с использованием прослушивателей и поиска запроса о том, где находится загрузка, но я попытался отменить его с помощью return {cancel: true}, но это только делает бесконечным l oop отправку одного и того же запроса. Первое, что я делаю, это обрабатываю все заголовки.
chrome.webRequest.onBeforeSendHeaders.addListener(requestHandlerHeader,
{ urls: ["<all_urls>"] },
["requestHeaders", "blocking"]);
Затем я фильтрую эти заголовки, чтобы найти тот, который я ищу (в данном случае я ищу многочастные / связанные запросы, потому что он используется при загрузке). в Google Диске)
for (var i = 0; i < details.requestHeaders.length; ++i) {
//Filter POST
if (details.method == "POST") {
//filter content-type
if (details.requestHeaders[i].name.toLowerCase() === 'content-type') {
/filter multipart
if (details.requestHeaders[i].value.toLowerCase().includes("multipart/related")) {...}
Вы можете видеть, что это запрос с необработанными данными с этим:
var enc = new TextDecoder("utf-8");
var data = "";
stream.requestBody.raw.forEach(e => {
data += enc.decode(e.bytes);
})
Как только у меня есть запрос, где я могу видеть необработанные данные, Я могу обработать событие, поэтому я отменяю запрос.
return {cancel: true};
Это не работает, он постоянно отправляет один и тот же запрос.