2013-08-10 16 views
8

में अवरुद्ध अनुरोध मैं क्रोम ऐप में कुछ अनुरोधों को अवरुद्ध करने का प्रयास कर रहा हूं।क्रोम

मैं एक जावास्क्रिप्ट श्रोता है कि इस मान्यता करता बनाया:

chrome.webRequest.onBeforeRequest.addListener(
    { 
     urls: ["*://site.com/test/*"] 
    }, 
    ["blocking"] 
); 

लेकिन अनुरोध अवरुद्ध नहीं कर रहे। क्या मुझे इस कोड में कुछ याद आया?

मेरे प्रकट:

"background": { 
     "scripts": ["listener.js"], 
     "persistent": true 
    }, 
"permissions": ["tabs", "http://*/*"], 
    "manifest_version": 2, 
+1

यदि आप [पृष्ठभूमि पृष्ठ के लिए सांत्वना खोला था] (http://stackoverflow.com/questions/10257301/where-to-read-console-messages-from-background-js-in -ए-क्रोम-एक्सटेंशन/10258029 # 10258029), आपको गलत अनुमतियों के बारे में त्रुटि संदेश दिखाई देंगे। अनुमतियों को ठीक करने के बाद, आपको एक और त्रुटि संदेश दिखाई देगा जो बताता है कि आपके 'webRequest' API कॉल का प्रारूप अमान्य है। –

+0

इस लिंक का उपयोग करना: [पैटर्न मिलान के साथ Google क्रोम में अनुरोध अवरुद्ध करना] (https://stackoverflow.com/a/45784247/7487135) –

उत्तर

14

ऐसा लगता है कि तुम यहाँ "अवरुद्ध" के अर्थ को गलत समझा।

https://developer.chrome.com/extensions/webRequest.html#subscription

वैकल्पिक opt_extraInfoSpec सरणी स्ट्रिंग 'अवरुद्ध' (केवल विशिष्ट घटनाओं के लिए अनुमति दी) तो कॉलबैक फ़ंक्शन तुल्यकालिक नियंत्रित किया जाता है। इसका मतलब है कि अनुरोध कॉलबैक फ़ंक्शन रिटर्न तक अवरुद्ध है। इस मामले में, कॉलबैक ब्लॉकिंग रिस्पॉन्स वापस कर सकता है जो अनुरोध के आगे के जीवन चक्र को निर्धारित करता है।

अनुरोध को अवरुद्ध करने के लिए (इसे रद्द करें), अपने ईवेंट हैंडलर में {cancel: true} लौटाएं।

उदाहरण के लिए:

chrome.webRequest.onBeforeRequest.addListener(
    function() { 
     return {cancel: true}; 
    }, 
    { 
     urls: ["*://site.com/test/*"] 
    }, 
    ["blocking"] 
); 

यह *://site.com/test/* मिलान किए गए सभी URL रोकेंगे।

अपने मेनिफेस्ट में webRequest और webRequestBlocking अनुमतियों को घोषित करना भी याद रखें।

3

आप निम्न कर सकते हैं:

  1. एक नया निर्देशिका बनाएं।
  2. नीचे दी गई फाइलें बनाएं।
  3. chrome://extensions/

background.js

chrome.webRequest.onBeforeRequest.addListener(
    function(){ return {cancel: true}; }, 
    { 
    urls: ["<all_urls>"], // Change this to a more specific pattern 
    types: ["script"] 
    }, 
    ["blocking"] 
); 

manifest.json

{ 
    "name": "Block request", 
    "version": "1.0", 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.html"] 
    }, 
    "permissions": [ 
     "webRequest", 
     "webRequestBlocking", 
     "<all_urls>" 
    ] 
} 
2

के माध्यम से डेवलपर मोड में पैक किए गए एक्सटेंशन लोड से क्रोम 59 आप blo कर सकते हैं डेवलपर टूल्स के नेटवर्क टैब से सीके विशिष्ट अनुरोध स्वयं। नेटवर्क पैनल में अनुरोध पर

https://developers.google.com/web/updates/2017/04/devtools-release-notes#block-requests

राइट क्लिक करें और चयन ब्लॉक अनुरोध यूआरएल। एक नया अनुरोध अवरुद्ध टैब ड्रॉवर में पॉप अप करता है, जो आपको अवरुद्ध अनुरोधों को प्रबंधित करने देता है।

Sample