यह स्वीकृत उत्तर इंगित करता है की तुलना में थोड़ा अधिक जटिल है।
क्लाउडफ्रंट + एस 3 का उपयोग करते समय कोर समर्थन वास्तव में एस 3 में लागू किया गया है और यह अमेज़ॅन के अनुसार इस तरह काम करता है:
अनुरोध के मूल शीर्षलेख को AllowedOrigin तत्व से मेल खाना चाहिए।
अनुरोध विधि (उदाहरण के लिए, GET या PUT) या एक्सेस-कंट्रोल रिक्वेस्ट-मेथड हैडर के मामले में प्रीफ्लाइट ऑप्शंस रिक्वेस्ट में से एक AllowedMethod तत्वों में से एक होना चाहिए।
अनुरोध के एक्सेस-कंट्रोल-रिक्वेस्ट-हेडर हेडर में सूचीबद्ध प्रत्येक हेडर प्रीफ़लाइट अनुरोध पर एक AllowedHeader तत्व से मेल खाना चाहिए।
यह अच्छा समझ में आता है, जो स्पष्ट नहीं हो सकता है कि यदि क्लाइंट द्वारा कोई मूल हेडर नहीं भेजा जाता है, तो यह प्रसंस्करण बिल्कुल नहीं किया जाता है। और हम क्लाउडफ्रंट का उपयोग कर रहे हैं, यदि आप केवल स्थैतिक संपत्ति की मेजबानी कर रहे हैं, तो आपने संभवतः कैशिंग करते समय सभी हेडर को अनदेखा करने के लिए इसे सेट किया है। इसलिए यदि विशिष्ट बढ़त नोड से प्रत्येक फ़ाइल के लिए पहला अनुरोध मूल हेडर शामिल नहीं करता है, तो यह एक्सेस-कंट्रोल-अनुमति-मूल हेडर के बिना प्रतिक्रिया को कैश करेगा।
परिणाम यह है कि पहला आने वाला अनुरोध यह निर्धारित करेगा कि कैश समाप्त होने तक सभी अनुरोधों के लिए कौन से हेडर लौटाए गए हैं।
इसे ठीक करने / हल करने के कई तरीके हैं।
- "मूल" हेडर के आधार पर सशर्त कैशिंग करने के लिए क्लाउडफ्रंट सेटअप करें।
यह ठीक काम करता है यदि आप केवल कुछ या एक मूल की अपेक्षा करते हैं, लेकिन अन्यथा आपका कैशिंग अनुपात वास्तव में खराब हो सकता है।
- लैम्बडा @ एज का उपयोग हेडर्स को जबरन सेट करने के लिए करें, यह प्रत्येक मूल (S3) अनुरोध के लिए बस एक बार किया जा सकता है।
पूरी तरह से लचीला, लेकिन ओवरहेड और लागत जोड़ता है।
- क्लाउडफ्रंट को "मूल" हेडर को प्रत्येक अनुरोध के लिए डमी मूल्य पर ओवरराइड करें।
यह "एक्सेस-कंट्रोल-अलाउंस-ओरिजिन: *" केस में वास्तव में उपयोगी है और यह हैक का एक सा है, लेकिन क्लाउडफ्रंट + एस 3 पर स्थिर संपत्ति की मेजबानी करते समय यह संभवतः सबसे अच्छा वर्तमान समाधान है।