अपारदर्शी प्रतिक्रियाओं 'हेडर्स / बॉडी तक पहुंच
अपारदर्शी प्रतिक्रियाओं के आसपास सबसे सरल सीमा यह है कि आप में से अधिकांश से सार्थक जानकारी वापस नहीं मिल सकता है गुण का Responseवर्ग, जैसे headers, या विभिन्न फोन तरीकों कि श्रृंगार Bodyइंटरफेस, जैसे json()या text()। यह एक अपारदर्शी प्रतिक्रिया की ब्लैक-बॉक्स प्रकृति के साथ है।
पृष्ठ पर संसाधन के रूप में अपारदर्शी प्रतिक्रियाओं का उपयोग करना
जब भी ब्राउज़र एक गैर- CORS क्रॉस-ऑरिजनल संसाधन का उपयोग करने की अनुमति देता है, तो वेब पेज पर अपारदर्शी प्रतिक्रियाओं को एक संसाधन के रूप में उपयोग किया जा सकता है। यहां उन तत्वों का एक उपसमूह है, जिसके लिए गैर-कोर क्रॉस-ऑरिजनल रिसोर्सेज और इसके बाद अपारदर्शी प्रतिक्रियाएं मान्य हैं, जिन्हें मोज़िला डेवलपर नेटवर्क प्रलेखन से अनुकूलित किया गया है :
<script>
<link rel="stylesheet">
<img>, <video>और<audio>
<object> तथा <embed>
<iframe>
एक उल्लेखनीय उपयोग मामला जिसके लिए अपारदर्शी प्रतिक्रियाएं मान्य नहीं हैं , फ़ॉन्ट संसाधनों के लिए है ।
सामान्य तौर पर, यह निर्धारित करने के लिए कि आप किसी पृष्ठ पर एक विशेष प्रकार के संसाधन के रूप में एक अपारदर्शी प्रतिक्रिया का उपयोग कर सकते हैं या नहीं, संबंधित विनिर्देश की जांच करें। उदाहरण के लिए, एचटीएमएल विनिर्देश बताता है कि गैर-कॉर्स क्रॉस-ऑरिजिन (यानी अपारदर्शी) प्रतिक्रियाओं का उपयोग <script>तत्वों के लिए किया जा सकता है , हालांकि लीक जानकारी को रोकने के लिए कुछ सीमाओं के साथ।
अपारदर्शी प्रतिक्रियाएँ और कैश संग्रहण एपीआई
एक "गोचा" जो डेवलपर अपारदर्शी प्रतिक्रियाओं के साथ चला सकता है , में कैशे स्टोरेज एपीआई के साथ उनका उपयोग करना शामिल है । पृष्ठभूमि की जानकारी के दो टुकड़े प्रासंगिक हैं:
statusएक अपारदर्शी प्रतिक्रिया की संपत्ति हमेशा निर्धारित होती है0 , चाहे मूल अनुरोध सफल हो या विफल।
- यदि कैश अनुरोध API
add()/ addAll()विधियों दोनों को अस्वीकार कर देगा यदि किसी भी अनुरोध के परिणामस्वरूप प्रतिक्रियाओं का एक स्थिति कोड है जो 2XX रेंज में नहीं है ।
उन दो बिंदुओं से, यह निम्नानुसार है कि यदि एक अपारदर्शी प्रतिक्रिया में add()/ addAll()कॉल के परिणाम के रूप में किए गए अनुरोध को कैश में जोड़ा जा सकता है।
आप स्पष्ट रूप से प्रदर्शन करके fetch()और फिर put()अपारदर्शी प्रतिक्रिया के साथ विधि को बुलाकर इसके चारों ओर काम कर सकते हैं । ऐसा करने से, आप प्रभावी रूप से इस जोखिम का विरोध कर रहे हैं कि आपके द्वारा कैशिंग की गई प्रतिक्रिया आपके सर्वर द्वारा दी गई त्रुटि हो सकती है।
const request = new Request('https://third-party-no-cors.com/', {mode: 'no-cors'});
fetch(request).then(response => cache.put(request, response));
अपारदर्शी प्रतिक्रियाएँ और नेविगेटर.स्टोरेज एपीआई
क्रॉस-डोमेन जानकारी के रिसाव से बचने के लिए, स्टोरेज कोटा सीमा की गणना के लिए उपयोग की जाने वाली एक अपारदर्शी प्रतिक्रिया के आकार में महत्वपूर्ण पैडिंग को जोड़ा गया है (जैसे कि एक QuotaExceededअपवाद फेंक दिया गया है) और navigator.storageएपीआई द्वारा रिपोर्ट किया गया है ।
इस पेडिंग का विवरण ब्राउज़र से ब्राउज़र में भिन्न होता है, लेकिन Google Chrome के लिए, इसका अर्थ है कि किसी भी एकल कैश्ड अपारदर्शी प्रतिक्रिया का कुल भंडारण उपयोग में न्यूनतम आकार लगभग 7 मेगाबाइट है । आपको यह ध्यान में रखना चाहिए कि यह निर्धारित करने के लिए कि आप कितनी अपारदर्शी प्रतिक्रियाओं को कैश करना चाहते हैं, क्योंकि आप आसानी से भंडारण कोटा सीमाओं को पार कर सकते हैं, जितनी जल्दी आप अन्यथा अपारदर्शी संसाधनों के वास्तविक आकार के आधार पर अपेक्षा करते हैं।