CORS सर्वर नहीं, ब्राउज़र लागू करता है, तो curl उसे कभी देखता ही नहीं। request शायद सर्वर तक पहुंची और जवाब में बस ऐसा allow origin header नहीं था जिसे ब्राउज़र मानता, या कोई preflight OPTIONS फेल हुई। network tab में OPTIONS request और उसके response headers देखें, पक्का करें कि allowed origin, methods और headers आपकी कॉल को कवर करते हैं, और याद रखें कि credentials के लिए साफ origin और allow credentials चाहिए, wildcard कभी नहीं।
इंटरव्यूअर यह क्यों पूछते हैं
हर फ्रंटएंड डेवलपर इससे टकराता है, और जवाब बताता है कि आप ब्राउज़र का सिक्योरिटी मॉडल समझते हैं या बस error गायब होने तक proxy config कॉपी करते हैं। इंटरव्यूअर सुनना चाहता है कि CORS response की हिफाज़त करता है, कि preflight गैर सादे methods, headers या content types से चलती है, और कि इलाज सर्वर पर है। यह सुझाना कि ब्राउज़र में web security बंद कर दें, फेल है।
अपना जवाब कैसे स्ट्रक्चर करें
- बताएं कि इसे ब्राउज़र लागू करता है, इसीलिए curl चल जाता है।
- network tab में preflight को असली request से अलग करें।
- खास error संदेश को गायब header से मिलाएं।
- बताएं कि इलाज कहां है और आप backend से क्या मांगेंगे।
उदाहरण जवाब
सबसे पहले मैं यही कहता हूं कि CORS ब्राउज़र का नियम है, सर्वर का नहीं, तो curl का चल जाना मुझे इसके सिवा कुछ नहीं बताता कि endpoint ऊपर है। ब्राउज़र ने request की, या उसके लिए preflight की, और मुझे response देने से मना कर दिया क्योंकि headers ने मेरे origin को इजाज़त नहीं दी। तो मैं network tab खोलकर पहले OPTIONS request ढूंढता हूं। अगर वह मौजूद है और 4xx लौटा रही है, तो preflight ही फेल हो रही है, आमतौर पर इसलिए कि मैंने कोई custom header या JSON content type जोड़ा जिसने इसे सादी request की श्रेणी से बाहर कर दिया, और सर्वर की allowed headers सूची में वह नहीं है। अगर कोई preflight ही नहीं है, तो असली response में मेरे origin से मेल खाता allow origin header गायब है। इलाज सर्वर की तरफ है। स्थानीय development में मैं dev server से proxy कर लेता हूं ताकि मेरा origin मेल खाए, पर मैं यह भी पक्का करता हूं कि असली headers configure हों, वरना staging में टूटेगा। और अगर कॉल cookies भेजती है, तो सर्वर को एक खास origin के साथ allow credentials लौटाना होगा, क्योंकि उस हाल में wildcard ठुकरा दिया जाता है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- कोई request इतनी सादी किससे बनती है कि preflight छूट जाए?
- credentialed requests के साथ wildcard origin क्यों नहीं चलता?
- अगर network tab में कोई response ही न दिखे तो आप इसे कैसे डिबग करेंगे?
फ्रंटएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें