खास जानकारी
क्या बदलाव होने वाले हैं?
Chrome 70 में, उपयोगकर्ता एक्सटेंशन होस्ट को या मौजूदा पेज का ऐक्सेस पाने के लिए क्लिक करने की ज़रूरत वाले एक्सटेंशन को कॉन्फ़िगर करें.
किन एपीआई पर असर पड़ा है?
इस बदलाव का असर उन सभी एपीआई पर पड़ता है जिन पर आपके एक्सटेंशन में बताई गई होस्ट की अनुमतियों का असर पड़ता है
और कॉन्टेंट स्क्रिप्ट भी शामिल हैं. जिन एपीआई को होस्ट करने की अनुमतियों की ज़रूरत होती है उनमें webRequest,
कुकी, tabs.executeScript() और tabs.insertCSS() और क्रॉस-ऑरिजिन परफ़ॉर्म कर रहे हैं
जैसे कि XMLHTTPRequest
या fetch()
API के ज़रिए किए गए अनुरोध.
ऐक्सेस को प्रतिबंधित कर रहा है
उपयोगकर्ता ऐक्सेस को कैसे प्रतिबंधित कर सकता है?
उपयोगकर्ता आपके एक्सटेंशन को क्लिक करने, साइटों के किसी खास सेट या सभी
अनुरोध की गई साइटें. ये विकल्प chrome://extensions
पेज पर और साथ ही उपयोगकर्ताओं के लिए प्रस्तुत किए गए हैं
का इस्तेमाल करें.
यदि कोई उपयोगकर्ता मेरे एक्सटेंशन को "क्लिक करने पर" चलाना चुनता है, तो क्या होगा?
एक्सटेंशन ऐसा काम करता है जैसे उसने activeTab अनुमति का इस्तेमाल किया हो. यह एक्सटेंशन है उस होस्ट को कुछ समय के लिए ऐक्सेस दिया जाता है जिस पर उपयोगकर्ता एक्सटेंशन पर क्लिक करता है. हालांकि, ऐसा तब होता है, जब उपयोगकर्ता ने एक्सटेंशन को हटाने का अनुरोध किया हो एक्सटेंशन (और यह कोई प्रतिबंधित साइट नहीं है, जैसे chrome://settings). जब क्लिक करने पर चलने के लिए सेट किया गया हो, Chrome आपके एक्सटेंशन को एक सर्कल और ड्रॉप शैडो (नीचे देखें) के साथ बैज करता है, जो यह बताता है कि किसी साइट के ऐक्सेस का अनुरोध करता है.
यदि कोई उपयोगकर्ता मेरे एक्सटेंशन को विशिष्ट साइटों पर चलाने का विकल्प चुनता है, तो क्या होता है?
आपके एक्सटेंशन को उपयोगकर्ता की चुनी गई किसी भी साइट पर अपने-आप चलने की अनुमति है और वह उपयोगकर्ता की कार्रवाई के बिना साइट को व्यवस्थित करना. उन साइटों पर जिनके लिए आपके एक्सटेंशन का अनुरोध किया गया था, लेकिन उपयोगकर्ता ने ऐसा नहीं किया था करने की अनुमति नहीं दी है, तो व्यवहार ठीक वैसा ही है जैसे उपयोगकर्ता ने क्लिक करने पर एक्सटेंशन को चलाने के लिए सेट किया हो.
क्या होता है यदि कोई उपयोगकर्ता मेरे एक्सटेंशन को सभी साइटों पर चलाने का विकल्प चुनता है?
यह एक्सटेंशन, उन साइटों को अपने-आप ऐक्सेस कर सकता है जिनके लिए मेनिफ़ेस्ट में अनुरोध किया गया है.
एपीआई के काम करने का तरीका
वेब अनुरोध एपीआई
एक्सटेंशन अब भी उन साइटों के किसी भी अनुरोध को रोक सकता है, उनमें बदलाव कर सकता है, और उन्हें ब्लॉक कर सकता है जिनका ऐक्सेस उसके पास है. इसके लिए ऐसी साइटें जिनका ऐक्सेस एक्सटेंशन के पास नहीं है, तो Chrome एक्सटेंशन को बैज करके यह बताता है कि एक्सटेंशन, पेज के ऐक्सेस का अनुरोध करता है. इसके बाद उपयोगकर्ता, एक्सटेंशन का ऐक्सेस दे सकता है; Chrome इसके बाद उपयोगकर्ता को पेज को रीफ़्रेश करने का निर्देश देता है, ताकि आपका एक्सटेंशन, नेटवर्क के अनुरोधों को क्रॉल कर सके.
कॉन्टेंट स्क्रिप्ट, tabs.exeuteScript(), tabs.insertCSS()
यह एक्सटेंशन अब भी उन साइटों के लिए स्क्रिप्ट और स्टाइल शीट को अपने-आप इंजेक्ट कर सकता है जिनका ऐक्सेस उसके पास है से. जिन साइटों का ऐक्सेस एक्सटेंशन के पास नहीं है उनके लिए, Chrome एक्सटेंशन को बैज करता है. इससे यह पता चलता है कि एक्सटेंशन, पेज के ऐक्सेस का अनुरोध करता है. इसके बाद उपयोगकर्ता, एक्सटेंशन का ऐक्सेस दे सकता है. अगर कॉन्टेंट स्क्रिप्ट को document_idle पर इंजेक्ट करने के लिए सेट किया गया है, तो स्क्रिप्ट तुरंत इंजेक्ट करेगी. या फिर, Chrome, उपयोगकर्ता को पेज को रीफ़्रेश करने का निर्देश देता है, ताकि आपके एक्सटेंशन को पेज पर पहले भी स्क्रिप्ट इंजेक्ट करने की अनुमति मिल सके पेज लोड (document_start या document_end पर) tabs.executeScript() और के लिए कॉलबैक tabs.insertCSS() के तरीके सिर्फ़ तब चालू किए जाते हैं, जब उपयोगकर्ता ने साइट का ऐक्सेस दिया हो.
कुकी और पृष्ठभूमि पेज XHR
एक्सटेंशन अब भी किसी भी कुकी को पढ़ सकता है और उसमें बदलाव कर सकता है. साथ ही, वह साइटों के लिए क्रॉस-ऑरिजिन XHR परफ़ॉर्म कर सकता है जिसके पास ऐक्सेस है. क्योंकि किसी अन्य ऑरिजिन के एक्सटेंशन पेज से जुड़ा कोई टैब कुकी या XHRing को किसी अन्य होस्ट से लिंक करने के बाद, Chrome, उपयोगकर्ता को यह बताने के लिए एक्सटेंशन को बैज नहीं करता कि एक्सटेंशन किसी साइट को ऐक्सेस करने का अनुरोध कर रहा है. किसी दूसरी साइट के लिए कुकी ऐक्सेस करने की कोशिश करना या अगर एक्सटेंशन के मेनिफ़ेस्ट में होस्ट को शामिल नहीं किया गया है, तो क्रॉस-ऑरिजिन XHR एक गड़बड़ी के साथ काम करना बंद कर देगा अनुमति. ऐसे मामलों में, हमारी सलाह है कि आप वैकल्पिक अनुमतियों का इस्तेमाल करें, ताकि का इस्तेमाल करें.
नीचे दिए गए उदाहरण में बताया गया है कि यह कुकी एपीआई के लिए कैसे काम कर सकता है.
पहले:
{
...
"permissions": ["cookies", "https://example.com"]
}
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
function(cookie) {
// Use the cookie.
});
बाद में:
{
...
"permissions": ["cookies"],
"optional_permissions": ["https://example.com"]
}
// Note: permissions.request() requires a user gesture, so this
// may only be done in response to a user action.
chrome.permissions.request(
{origins: ['https://example.com']},
function(granted) {
if (granted) {
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
function(cookie) {
// Use the cookie.
});
} else {
// Handle grant failure
}
});
माइग्रेशन
बुरे असर से बचने के सबसे सही तरीके कौनसे हैं?
एक्सटेंशन वैकल्पिक अनुमतियों, activeTab, और declarativeContent एपीआई का इस्तेमाल कर सकते हैं सबसे सही तरीकों का पालन करें. वैकल्पिक अनुमतियां रनटाइम पर दी जाती हैं और एक्सटेंशन को किसी साइट के खास ऐक्सेस का अनुरोध करने में मदद मिलती है. activeTab अनुमति पर कोई असर नहीं पड़ता और एक्सटेंशन तो वह सामान्य रूप से काम करता रहेगा. declarativeContent API (एपीआई) कई ज़रूरतों का एक विकल्प है का इस्तेमाल करें.
मेरे मौजूदा उपयोगकर्ताओं का क्या होगा सेटिंग?
इस बदलाव से, आपके एक्सटेंशन को दी गई किसी भी मौजूदा अनुमति पर तुरंत असर नहीं पड़ेगा. इसका मतलब है कि यह पहले की तरह काम करता रहेगा, जब तक कि उपयोगकर्ता को ऐक्सेस करने की अनुमति है. आने वाले समय में रिलीज़ होने वाली रिलीज़ में, Chrome अपने हिसाब से बदलाव करने के लिए लोगों को ज़्यादा कंट्रोल देगा. सेटिंग.
मैं यह कैसे पता करूं कि मेरे एक्सटेंशन को किसी साइट पर चलने की अनुमति है या नहीं?
permissions.contains() एपीआई का इस्तेमाल करके, यह पता लगाया जा सकता है कि आपका एक्सटेंशन दिए गए ऑरिजिन को ऐक्सेस देता है.