ब्यौरा
chrome.contentSettings
एपीआई का इस्तेमाल करके, यह कंट्रोल करने वाली सेटिंग बदलें कि वेबसाइटें कुकी, JavaScript, और प्लग इन जैसी सुविधाओं का इस्तेमाल कर सकती हैं या नहीं. सामान्य तौर पर, कॉन्टेंट सेटिंग की मदद से, Chrome के व्यवहार को हर साइट के हिसाब से बदला जा सकता है. इसके लिए, आपको Chrome की सेटिंग में जाकर बदलाव करने की ज़रूरत नहीं होती.
अनुमतियां
contentSettings
एपीआई का इस्तेमाल करने के लिए, आपको अपने एक्सटेंशन के मेनिफ़ेस्ट में "contentSettings"
अनुमति के बारे में एलान करना होगा. उदाहरण के लिए:
{ "name": "My extension", ... "permissions": [ "contentSettings" ], ... }
कॉन्सेप्ट और इस्तेमाल
कॉन्टेंट सेटिंग के पैटर्न
पैटर्न का इस्तेमाल करके, उन वेबसाइटों के बारे में बताया जा सकता है जिन पर कॉन्टेंट की हर सेटिंग का असर पड़ता है. उदाहरण के लिए, https://*.youtube.com/*
, youtube.com और उसके सभी सबडोमेन के बारे में बताता है. कॉन्टेंट सेटिंग के पैटर्न का सिंटैक्स, मैच पैटर्न के सिंटैक्स जैसा ही होता है. हालांकि, दोनों में कुछ अंतर हैं:
http
,https
, औरftp
यूआरएल के लिए, पाथ वाइल्डकार्ड (/*
) होना चाहिए.file
यूआरएल के लिए, पाथ पूरी तरह से तय किया जाना चाहिए और इसमें वाइल्डकार्ड नहीं होने चाहिए.- मैच पैटर्न के उलट, कॉन्टेंट सेटिंग पैटर्न में पोर्ट नंबर तय किया जा सकता है. अगर कोई पोर्ट नंबर दिया गया है, तो पैटर्न सिर्फ़ उस पोर्ट वाली वेबसाइटों से मैच करता है. अगर कोई पोर्ट नंबर नहीं दिया गया है, तो पैटर्न सभी पोर्ट से मैच करता है.
पैटर्न लागू होने का क्रम
अगर किसी साइट पर कॉन्टेंट सेटिंग के एक से ज़्यादा नियम लागू होते हैं, तो ज़्यादा खास पैटर्न वाले नियम को प्राथमिकता दी जाती है.
उदाहरण के लिए, यहां दिए गए पैटर्न को प्राथमिकता के हिसाब से क्रम में लगाया गया है:
https://www.example.com/*
https://*.example.com/*
(example.com और सभी सबडोमेन से मेल खाने वाला)<all_urls>
(हर यूआरएल से मेल खाने वाला)
तीन तरह के वाइल्डकार्ड से यह तय होता है कि कोई पैटर्न कितना सटीक है:
- पोर्ट में वाइल्डकार्ड (उदाहरण के लिए,
https://www.example.com:*/*
) - स्कीम में वाइल्डकार्ड (उदाहरण के लिए,
*://www.example.com:123/*
) - होस्टनेम में वाइल्डकार्ड (उदाहरण के लिए
https://*.example.com:123/*
)
अगर कोई पैटर्न, किसी दूसरे पैटर्न से एक हिस्से में ज़्यादा सटीक है, लेकिन दूसरे हिस्से में कम सटीक है, तो अलग-अलग हिस्सों की जांच इस क्रम में की जाती है: होस्टनेम, स्कीम, पोर्ट. उदाहरण के लिए, यहां दिए गए पैटर्न को प्राथमिकता के हिसाब से क्रम में लगाया गया है:
https://www.example.com:*/*
यह होस्टनेम और स्कीम के बारे में बताता है.*:/www.example.com:123/*
यह उतना सटीक नहीं है, क्योंकि इसमें होस्टनेम के बारे में बताया गया है, लेकिन स्कीम के बारे में नहीं बताया गया है.https://*.example.com:123/*
कम है, क्योंकि इसमें पोर्ट और स्कीम के बारे में बताया गया है. हालांकि, इसमें होस्टनेम में वाइल्डकार्ड है.
प्राइमरी और सेकंडरी पैटर्न
कॉन्टेंट के टाइप के हिसाब से यह तय किया जाता है कि कौनसी कॉन्टेंट सेटिंग लागू की जाए. इसके लिए, यूआरएल को ध्यान में रखा जाता है. उदाहरण के लिए, contentSettings.notifications
के लिए सेटिंग, ओमनीबॉक्स में दिखाए गए यूआरएल पर आधारित होती हैं. इस यूआरएल को "प्राइमरी" यूआरएल कहा जाता है.
कुछ तरह के कॉन्टेंट के लिए, अतिरिक्त यूआरएल इस्तेमाल किए जा सकते हैं. उदाहरण के लिए, किसी साइट को contentSettings.cookies
सेट करने की अनुमति है या नहीं, यह एचटीटीपी अनुरोध के यूआरएल (इस मामले में, यह मुख्य यूआरएल है) और खोज वाली पट्टी में दिखाए गए यूआरएल (इसे "दूसरा" यूआरएल कहा जाता है) के आधार पर तय किया जाता है.
अगर कई नियमों में प्राइमरी और सेकंडरी पैटर्न होते हैं, तो ज़्यादा सटीक प्राइमरी पैटर्न वाले नियम को प्राथमिकता दी जाती है. अगर कई नियमों में एक जैसा प्राइमरी पैटर्न है, तो ज़्यादा सटीक सेकंडरी पैटर्न वाले नियम को प्राथमिकता दी जाती है. उदाहरण के लिए, प्राइमरी/सेकंडरी पैटर्न के जोड़े की इस सूची को प्राथमिकता के हिसाब से क्रम में लगाया गया है:
प्राथमिकता | प्राइमरी पैटर्न | सेकंडरी पैटर्न |
---|---|---|
1 | https://www.moose.com/* , | https://www.wombat.com/* |
2 | https://www.moose.com/* , | <all_urls> |
3 | <all_urls> , | https://www.wombat.com/* |
4 | <all_urls> , | <all_urls> |
इमेज के लिए कॉन्टेंट सेटिंग में, सेकंडरी पैटर्न का इस्तेमाल नहीं किया जा सकता.
संसाधन आइडेंटिफ़ायर
संसाधन आइडेंटिफ़ायर की मदद से, किसी कॉन्टेंट टाइप के खास सबटाइप के लिए कॉन्टेंट सेटिंग तय की जा सकती हैं. फ़िलहाल, contentSettings.plugins
ही ऐसा कॉन्टेंट टाइप है जिसमें रिसॉर्स आइडेंटिफ़ायर इस्तेमाल किए जा सकते हैं. रिसॉर्स आइडेंटिफ़ायर से किसी प्लगिन की पहचान होती है. कॉन्टेंट सेटिंग लागू करते समय, सबसे पहले किसी प्लगिन की सेटिंग देखी जाती हैं. अगर किसी प्लगिन के लिए कोई सेटिंग नहीं मिलती है, तो प्लगिन के लिए कॉन्टेंट की सामान्य सेटिंग की जांच की जाती है.
उदाहरण के लिए, अगर कॉन्टेंट सेटिंग के किसी नियम में रिसॉर्स आइडेंटिफ़ायर adobe-flash-player
और पैटर्न <all_urls>
है, तो इसे रिसॉर्स आइडेंटिफ़ायर और पैटर्न https://www.example.com/*
के बिना वाले नियम से ज़्यादा प्राथमिकता दी जाएगी. भले ही, वह पैटर्न ज़्यादा सटीक हो.
contentSettings.ContentSetting.getResourceIdentifiers()
तरीके को कॉल करके, किसी कॉन्टेंट टाइप के लिए संसाधन आइडेंटिफ़ायर की सूची पाई जा सकती है. उपयोगकर्ता के डिवाइस पर इंस्टॉल किए गए प्लगिन के सेट के हिसाब से, दिखाई गई सूची में बदलाव हो सकता है. हालांकि, Chrome प्लगिन के अपडेट के दौरान आइडेंटिफ़ायर को स्थिर रखने की कोशिश करता है.
उदाहरण
इस एपीआई को आज़माने के लिए, chrome-extension-samples रिपॉज़िटरी से contentSettings API का उदाहरण इंस्टॉल करें.
टाइप
AutoVerifyContentSetting
Enum
"allow"
"block"
CameraContentSetting
Enum
"allow"
"block"
"ask"
ClipboardContentSetting
Enum
"allow"
"block"
"ask"
ContentSetting
प्रॉपर्टी
- मिटाएं
अमान्य
इस एक्सटेंशन के ज़रिए सेट किए गए, कॉन्टेंट सेटिंग से जुड़े सभी नियमों को मिटाता है.
clear
फ़ंक्शन इस तरह दिखता है:(details: object) => {...}
- विवरण
ऑब्जेक्ट
- दायरा
स्कोप ज़रूरी नहीं है
सेटिंग को कहाँ मिटाना है (डिफ़ॉल्ट: नियमित).
-
- returns
Promise<void>
Chrome 96 या इसके बाद का वर्शन
-
- सदस्यता लें
अमान्य
यह फ़ंक्शन, यूआरएल के दिए गए जोड़े के लिए, कॉन्टेंट की मौजूदा सेटिंग की जानकारी देता है.
get
फ़ंक्शन इस तरह दिखता है:(details: object) => {...}
- विवरण
ऑब्जेक्ट
- गुप्त
बूलियन ज़रूरी नहीं है
यह तय करना कि गुप्त सेशन के लिए कॉन्टेंट सेटिंग की जांच करनी है या नहीं. (default false)
- primaryUrl
स्ट्रिंग
वह मुख्य यूआरएल जिसके लिए कॉन्टेंट की सेटिंग वापस लानी है. ध्यान दें कि प्राइमरी यूआरएल का मतलब, कॉन्टेंट टाइप के हिसाब से अलग-अलग होता है.
- resourceIdentifier
ResourceIdentifier optional
कॉन्टेंट के टाइप का ज़्यादा सटीक आइडेंटिफ़ायर, जिसके लिए सेटिंग वापस लानी हैं.
- secondaryUrl
string ज़रूरी नहीं है
वह दूसरा यूआरएल जिसके लिए कॉन्टेंट की सेटिंग वापस लानी है. डिफ़ॉल्ट रूप से, यह मुख्य यूआरएल होता है. ध्यान दें कि सेकंडरी यूआरएल का मतलब, कॉन्टेंट टाइप पर निर्भर करता है. साथ ही, सभी कॉन्टेंट टाइप में सेकंडरी यूआरएल का इस्तेमाल नहीं किया जाता.
-
- returns
Promise<object>
Chrome 96 या इसके बाद का वर्शन
-
- getResourceIdentifiers
अमान्य
getResourceIdentifiers
फ़ंक्शन इस तरह दिखता है:() => {...}
- returns
Promise<ResourceIdentifier[]>
Chrome 96 या इसके बाद का वर्शन
-
- सेट करो
अमान्य
कॉन्टेंट सेटिंग का नया नियम लागू करता है.
set
फ़ंक्शन इस तरह दिखता है:(details: object) => {...}
- विवरण
ऑब्जेक्ट
- primaryPattern
स्ट्रिंग
प्राइमरी यूआरएल का पैटर्न. पैटर्न के फ़ॉर्मैट के बारे में ज़्यादा जानकारी के लिए, कॉन्टेंट सेटिंग के पैटर्न देखें.
- resourceIdentifier
ResourceIdentifier optional
कॉन्टेंट टाइप के लिए रिसॉर्स आइडेंटिफ़ायर.
- दायरा
स्कोप ज़रूरी नहीं है
सेटिंग कहां सेट करें (डिफ़ॉल्ट: सामान्य).
- secondaryPattern
string ज़रूरी नहीं है
सेकंडरी यूआरएल का पैटर्न. डिफ़ॉल्ट रूप से, यह सभी यूआरएल से मेल खाता है. पैटर्न के फ़ॉर्मैट के बारे में ज़्यादा जानकारी के लिए, कॉन्टेंट सेटिंग के पैटर्न देखें.
- सेट हो रहा है
कोई
इस नियम के ज़रिए लागू की गई सेटिंग. संभावित वैल्यू के लिए, ContentSetting ऑब्जेक्ट की जानकारी देखें.
-
- returns
Promise<void>
Chrome 96 या इसके बाद का वर्शन
-
CookiesContentSetting
Enum
"allow"
"block"
"session_only"
FullscreenContentSetting
मान
"allow"
ImagesContentSetting
Enum
"allow"
"block"
JavascriptContentSetting
Enum
"allow"
"block"
LocationContentSetting
Enum
"allow"
"block"
"ask"
MicrophoneContentSetting
Enum
"allow"
"block"
"ask"
MouselockContentSetting
मान
"allow"
MultipleAutomaticDownloadsContentSetting
Enum
"allow"
"block"
"ask"
NotificationsContentSetting
Enum
"allow"
"block"
"ask"
PluginsContentSetting
मान
"block"
PopupsContentSetting
Enum
"allow"
"block"
PpapiBrokerContentSetting
मान
"block"
ResourceIdentifier
सिर्फ़ contentSettings.plugins
कॉन्टेंट टाइप में रिसॉर्स आइडेंटिफ़ायर का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, संसाधन आइडेंटिफ़ायर देखें.
प्रॉपर्टी
- ब्यौरा
string ज़रूरी नहीं है
संसाधन के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सके.
- आईडी
स्ट्रिंग
दिए गए कॉन्टेंट टाइप के लिए संसाधन आइडेंटिफ़ायर.
Scope
ContentSetting का स्कोप. इनमें से एक regular
: सामान्य प्रोफ़ाइल के लिए सेटिंग (अगर इसे कहीं और नहीं बदला जाता है, तो यह गुप्त प्रोफ़ाइल के लिए भी इस्तेमाल की जाती है), incognito\_session\_only
: गुप्त प्रोफ़ाइल के लिए सेटिंग. इसे सिर्फ़ गुप्त सेशन के दौरान सेट किया जा सकता है. गुप्त सेशन खत्म होने पर इसे मिटा दिया जाता है (यह सामान्य सेटिंग को बदल देती है).
Enum
"regular"
"incognito_session_only"
SoundContentSetting
Enum
"allow"
"block"
प्रॉपर्टी
automaticDownloads
साइटों को अपने-आप कई फ़ाइलें डाउनलोड करने की अनुमति देनी है या नहीं. इनमें से कोई एक विकल्प चुनें allow
: साइटों को अपने-आप कई फ़ाइलें डाउनलोड करने की अनुमति दें, block
: साइटों को अपने-आप कई फ़ाइलें डाउनलोड करने की अनुमति न दें, ask
: पहली फ़ाइल के बाद, जब कोई साइट अपने-आप फ़ाइलें डाउनलोड करना चाहे, तब अनुमति मांगें. डिफ़ॉल्ट वैल्यू ask
है. प्राइमरी यूआरएल, टॉप-लेवल फ़्रेम का यूआरएल होता है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है.
autoVerify
इससे यह तय किया जाता है कि साइटों को Private State Tokens API इस्तेमाल करने की अनुमति देनी है या नहीं. इनमें से कोई एक allow
: साइटों को Private State Tokens API का इस्तेमाल करने की अनुमति दें block
: साइटों को Private State Tokens API का इस्तेमाल करने से रोकें. डिफ़ॉल्ट वैल्यू allow
है. set()
को कॉल करते समय, मुख्य यूआरएल पैटर्न <all_urls>
होना चाहिए. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है.
camera
इससे यह तय होता है कि साइटों को कैमरे का ऐक्सेस देना है या नहीं. इनमें से कोई एक विकल्प चुनें allow
: साइटों को कैमरा ऐक्सेस करने की अनुमति दें, block
: साइटों को कैमरा ऐक्सेस करने की अनुमति न दें, ask
: जब कोई साइट कैमरा ऐक्सेस करने की अनुमति मांगे, तब पूछें. डिफ़ॉल्ट वैल्यू ask
है. प्राइमरी यूआरएल, उस दस्तावेज़ का यूआरएल होता है जिसने कैमरे के ऐक्सेस का अनुरोध किया है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है. ध्यान दें: अगर दोनों पैटर्न '<all_urls>' हैं, तो 'allow' सेटिंग मान्य नहीं होगी.
clipboard
इस नीति से यह तय किया जाता है कि साइटों को Async Clipboard API की ऐडवांस सुविधाओं के ज़रिए क्लिपबोर्ड ऐक्सेस करने की अनुमति दी जाए या नहीं. "ऐडवांस" सुविधाओं में, उपयोगकर्ता के जेस्चर के बाद इन-बिल्ट फ़ॉर्मैट में लिखने के अलावा कुछ भी शामिल है. जैसे, पढ़ने की सुविधा, कस्टम फ़ॉर्मैट में लिखने की सुविधा, और उपयोगकर्ता के जेस्चर के बिना लिखने की सुविधा. इनमें से कोई एक विकल्प चुनें allow
: साइटों को क्लिपबोर्ड की ऐडवांस सुविधाओं का इस्तेमाल करने की अनुमति दें, block
: साइटों को क्लिपबोर्ड की ऐडवांस सुविधाओं का इस्तेमाल करने की अनुमति न दें, ask
: जब कोई साइट क्लिपबोर्ड की ऐडवांस सुविधाओं का इस्तेमाल करना चाहे, तब अनुमति मांगें. डिफ़ॉल्ट वैल्यू ask
है. प्राइमरी यूआरएल, उस दस्तावेज़ का यूआरएल होता है जिसने क्लिपबोर्ड के ऐक्सेस का अनुरोध किया है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है.
cookies
वेबसाइटों को कुकी और अन्य स्थानीय डेटा सेट करने की अनुमति देनी है या नहीं. इनमें से कोई एक allow
: कुकी स्वीकार करें, block
: कुकी ब्लॉक करें, session\_only
: सिर्फ़ मौजूदा सेशन के लिए कुकी स्वीकार करें. डिफ़ॉल्ट वैल्यू allow
है. मुख्य यूआरएल, कुकी के ऑरिजिन को दिखाने वाला यूआरएल होता है. सेकंडरी यूआरएल, टॉप-लेवल फ़्रेम का यूआरएल होता है.
fullscreen
अब काम नहीं करता. अब इसका कोई असर नहीं होता. अब सभी साइटों को फ़ुलस्क्रीन मोड की अनुमति अपने-आप मिल जाती है. यह वैल्यू हमेशा allow
होती है.
images
इमेज दिखानी हैं या नहीं. इनमें से कोई एक allow
: इमेज दिखाएं block
: इमेज न दिखाएं. डिफ़ॉल्ट वैल्यू allow
है. प्राइमरी यूआरएल, टॉप-लेवल फ़्रेम का यूआरएल होता है. सेकंडरी यूआरएल, इमेज का यूआरएल होता है.
javascript
JavaScript को चलाना है या नहीं. इनमें से कोई एक allow
: JavaScript चलाएं, block
: JavaScript न चलाएं. डिफ़ॉल्ट वैल्यू allow
है. प्राइमरी यूआरएल, टॉप-लेवल फ़्रेम का यूआरएल होता है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है.
location
जगह की जानकारी ऐक्सेस करने की अनुमति देनी है या नहीं. इनमें से कोई एक विकल्प चुनें allow
: साइटों को आपकी जगह की जानकारी ट्रैक करने की अनुमति दें, block
: साइटों को आपकी जगह की जानकारी ट्रैक करने की अनुमति न दें, ask
: साइटों को आपकी जगह की जानकारी ट्रैक करने की अनुमति देने से पहले पूछें. डिफ़ॉल्ट वैल्यू ask
है. प्राइमरी यूआरएल, उस दस्तावेज़ का यूआरएल होता है जिसने जगह की जानकारी का अनुरोध किया है. सेकंडरी यूआरएल, टॉप-लेवल फ़्रेम का यूआरएल होता है. यह अनुरोध करने वाले यूआरएल से अलग हो सकता है या नहीं भी हो सकता.
microphone
साइटों को माइक्रोफ़ोन ऐक्सेस करने की अनुमति देनी है या नहीं. इनमें से कोई एक विकल्प चुनें allow
: साइटों को माइक्रोफ़ोन ऐक्सेस करने की अनुमति दें, block
: साइटों को माइक्रोफ़ोन ऐक्सेस करने की अनुमति न दें, ask
: जब कोई साइट माइक्रोफ़ोन ऐक्सेस करना चाहे, तब अनुमति मांगें. डिफ़ॉल्ट वैल्यू ask
है. प्राइमरी यूआरएल, उस दस्तावेज़ का यूआरएल होता है जिसने माइक्रोफ़ोन के ऐक्सेस का अनुरोध किया है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है. ध्यान दें: अगर दोनों पैटर्न '<all_urls>' हैं, तो 'allow' सेटिंग मान्य नहीं होगी.
mouselock
अब काम नहीं करता. अब इसका कोई असर नहीं होता. माउस लॉक करने की अनुमति अब सभी साइटों को अपने-आप मिल जाती है. यह वैल्यू हमेशा allow
होती है.
notifications
इससे यह तय किया जाता है कि साइटों को डेस्कटॉप सूचनाएं दिखाने की अनुमति देनी है या नहीं. इनमें से कोई एक विकल्प चुनें allow
: साइटों को डेस्कटॉप सूचनाएं दिखाने की अनुमति दें, block
: साइटों को डेस्कटॉप सूचनाएं दिखाने की अनुमति न दें, ask
: जब कोई साइट डेस्कटॉप सूचनाएं दिखाना चाहे, तब पूछें. डिफ़ॉल्ट वैल्यू ask
है. प्राइमरी यूआरएल, उस दस्तावेज़ का यूआरएल होता है जिसे सूचना दिखानी होती है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है.
plugins
अब काम नहीं करता. Chrome 88 में Flash की सुविधा हटा दी गई है. इसलिए, इस अनुमति का अब कोई असर नहीं पड़ता. यह वैल्यू हमेशा block
होती है. set()
और clear()
को किए गए कॉल को अनदेखा कर दिया जाएगा.
popups
इससे यह तय होता है कि साइटों को पॉप-अप दिखाने की अनुमति देनी है या नहीं. इनमें से कोई एक allow
: साइटों को पॉप-अप दिखाने की अनुमति दें, block
: साइटों को पॉप-अप दिखाने की अनुमति न दें. डिफ़ॉल्ट वैल्यू block
है. प्राइमरी यूआरएल, टॉप-लेवल फ़्रेम का यूआरएल होता है. सेकंडरी यूआरएल का इस्तेमाल नहीं किया गया है.
unsandboxedPlugins
अब काम नहीं करता. पहले, यह नीति कंट्रोल करती थी कि साइटों को अनसैंडबॉक्स किए गए प्लगिन चलाने की अनुमति दी जाए या नहीं. हालांकि, Chrome 88 में Flash broker प्रोसेस को हटा दिया गया है. इसलिए, अब इस अनुमति का कोई असर नहीं पड़ता. यह वैल्यू हमेशा block
होती है. set()
और clear()
को किए गए कॉल को अनदेखा कर दिया जाएगा.