इस लेख में
CORS क्या है?
Cross-Origin Resource Sharing (CORS) एक ब्राउज़र सुरक्षा तंत्र है जो नियंत्रित करता है कि कौन-से वेब ऑरिजिन आपके सर्वर के संसाधनों तक पहुँच सकते हैं। डिफ़ॉल्ट रूप से, ब्राउज़र same-origin नीति लागू करते हैं, जो JavaScript को किसी अलग डोमेन, पोर्ट या प्रोटोकॉल पर अनुरोध करने से रोकती है।
CORS हेडर ब्राउज़र को बताते हैं कि किन cross-origin अनुरोधों को अनुमति देनी है। सही हेडर के बिना, एक डोमेन के फ़्रंटएंड से दूसरे डोमेन के बैकएंड पर किए गए API कॉल CORS त्रुटि के साथ विफल हो जाएँगे। एक CORS हेडर जेनरेटर आपके सर्वर कॉन्फ़िगरेशन के लिए सही Access-Control-Allow-* हेडर बनाता है।
CORS हेडर कैसे काम करते हैं
CORS HTTP प्रतिक्रिया हेडर के एक सेट के माध्यम से काम करता है जिन्हें सर्वर यह दर्शाने के लिए भेजता है कि cross-origin अनुरोधों के लिए कौन-से ऑरिजिन, मेथड और हेडर अनुमत हैं।
- Access-Control-Allow-Origin — निर्दिष्ट करता है कि कौन-से ऑरिजिन संसाधन तक पहुँच सकते हैं (एक विशिष्ट डोमेन, या किसी भी ऑरिजिन के लिए *)
- Preflight अनुरोध — ग़ैर-सरल अनुरोधों के लिए, ब्राउज़र पहले एक OPTIONS अनुरोध भेजते हैं यह जाँचने के लिए कि वास्तविक अनुरोध अनुमत है या नहीं
- Credentials संभालना — Access-Control-Allow-Credentials: true कुकीज़ और auth हेडर की अनुमति देता है, पर इसके लिए एक विशिष्ट ऑरिजिन चाहिए (wildcard * नहीं)
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
CORS हेडर जेनरेट करें →CORS कब कॉन्फ़िगर करें
CORS कॉन्फ़िगरेशन तब आवश्यक होता है जब आपका फ़्रंटएंड और बैकएंड अलग-अलग ऑरिजिन से परोसे जाते हैं।
- API विकास — अलग डोमेन पर फ़्रंटएंड ऐप्स द्वारा पहुँचे जाने वाले REST या GraphQL API को CORS हेडर की ज़रूरत होती है
- CDN सेटअप — किसी CDN सबडोमेन से स्थैतिक संसाधन परोसने के लिए फ़ॉन्ट फ़ाइलों और API अनुरोधों हेतु CORS की आवश्यकता होती है
- Microservices — स्थानीय विकास के दौरान अलग-अलग पोर्ट पर चलने वाली सेवाओं को ब्राउज़र के माध्यम से संवाद करने के लिए CORS की ज़रूरत होती है
अक्सर पूछे जाने वाले प्रश्न
मैं हर चीज़ के लिए बस Access-Control-Allow-Origin: * का उपयोग क्यों नहीं कर सकता?
wildcard * किसी भी ऑरिजिन की अनुमति देता है, जो सार्वजनिक API के लिए ठीक है। हालाँकि, इसका उपयोग credentials (कुकीज़, Authorization हेडर) के साथ नहीं किया जा सकता। अगर आपके API को प्रमाणीकरण की आवश्यकता है, तो आपको सटीक ऑरिजिन निर्दिष्ट करना होगा। wildcard कस्टम प्रतिक्रिया हेडर उजागर करने जैसी अन्य CORS सुविधाओं को भी अक्षम कर देता है।
Preflight अनुरोध क्या है?
Preflight एक HTTP OPTIONS अनुरोध है जिसे ब्राउज़र वास्तविक अनुरोध से पहले अपने आप भेजता है। यह जाँचता है कि सर्वर मेथड, हेडर और ऑरिजिन की अनुमति देता है या नहीं। Preflight उन अनुरोधों के लिए होता है जिनमें कस्टम हेडर हों, GET/POST/HEAD के अलावा मेथड हों, या फ़ॉर्म डिफ़ॉल्ट से बाहर Content-Type मान हों।
मैं 'No Access-Control-Allow-Origin header' त्रुटि को कैसे ठीक करूँ?
अपने सर्वर की प्रतिक्रिया में अनुरोध करने वाले ऑरिजिन के डोमेन के साथ Access-Control-Allow-Origin हेडर जोड़ें। Express के लिए cors मिडलवेयर का उपयोग करें, Nginx के लिए add_header निर्देश जोड़ें, Apache के लिए Header set निर्देशों का उपयोग करें। सुनिश्चित करें कि हेडर preflight OPTIONS प्रतिक्रिया और वास्तविक प्रतिक्रिया दोनों पर मौजूद हो।