2012-07-21 26 views
14

से इंटरसेप्ट HTTP अनुरोध निकाय मुझे पता है कि chrome.webRequest.onBeforeRequest एक अनुरोध को अवरुद्ध, विश्लेषण और अवरुद्ध करने की अनुमति देता है, लेकिन यह केवल अनुरोध हेडर तक पहुंच की अनुमति देता है, न कि अनुरोध निकाय (जहां तक ​​मुझे पता है)।क्रोम एक्सटेंशन

नमूना उपयोग केस: फ़ॉर्म मानों को रोकना सोचें।

ऐसा लगता है कि एक एपीआई परिवर्तन प्रस्ताव here बिल्कुल यह सुझाव दे रहा है।

क्या यह एक और तरीका है जिसे पूरा किया जा सकता है?

धन्यवाद।

+2

को बाधित करना प्रतिक्रिया/अनुरोध निकायों वर्तमान में संभव का उपयोग नहीं है अंतर्निहित Chrome एपीआई। [नवीनतम स्रोत कोड का प्रासंगिक हिस्सा] (http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/web_request/) में ऐसी सुविधा का कोई संकेत नहीं है। यदि आप सुविधा के बिना नहीं जी सकते हैं, तो आप या तो [संभावनाएं] (http://stackoverflow.com/tags/npapi/info) [एनपीएपीआई प्लगइन्स] का पता लगा सकते हैं (http://code.google.com/chrome /extensions/npapi.html), या एक (स्थानीय) सर्वर लॉन्च करें, और अपने स्थानीय सर्वर पर विशिष्ट अनुरोधों को पुनर्निर्देशित करें। –

+0

दुर्भाग्यपूर्ण है। एनपीएपीआई मेरी जरूरतों के लिए ओवरकिल की तरह लगता है। हालांकि उत्तर के लिए धन्यवाद। – Ped

उत्तर

9

यह कार्यक्षमता अब API में जोड़ा गया है, documentation देखें।

शरीर आप निम्न कार्य करने का उपयोग करने के:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) 
    { 
     console.log(details.requestBody); 
    }, 
    {urls: ["https://myurlhere.com/*"]}, 
    ['requestBody'] 
); 
+0

जी, यह कमाल है। पिंग के लिए धन्यवाद। – Ped

+1

मेरे लिए यह हमेशा अनिर्धारित लौटाता है। शायद बीटा चैनल के लिए केवल? – BeauCielBleu

+0

@BeauCielBleu कोई अनुरोध निकाय नहीं हो सकता है। इसके बजाय यूआरएल लॉगिंग करने का प्रयास करें: 'console.log (" url: "+ details.url);' – georgiecasey

2

जबकि आप अवरोध करने में सक्षम नहीं हो सकते हैं, तो आप मानक AJAX दृष्टिकोण का उपयोग नलिका टेप के लिए कर सकते हैं। Href अनुरोध करने के बजाय यह देखने के लिए कि क्या आप एसिंक्रोनस कॉल कर सकते हैं और इसे HTML ऑब्जेक्ट में सहेज सकते हैं जो प्रस्तुत नहीं किया गया है। फिर स्क्रैप/पढ़/पार्स/जो भी आपके शरीर के मानदंड है, और यदि यह गुजरता है, तो उस बॉडी ऑब्जेक्ट को वर्तमान विंडो/पेज पर वापस दबाएं।

एक दबाए गए तत्व में सामग्री संग्रहीत करना और फिर सामग्री के लिए उसी तत्व का उपयोग करने से आप डुप्लिकेट कॉल करने से बचने की अनुमति देंगे। नकारात्मकता यह है कि आपको उन सामानों की पूरी सामग्री मिल जाएगी जिन्हें आप समाप्त नहीं करेंगे। यह बैंडविड्थ/गति प्रदर्शन समस्या हो सकती है या नहीं भी हो सकती है।

संबंधित मुद्दे