फुल स्टैक डेवलपर इंटरव्यू सवाल

ब्राउज़र हमारी कुछ API कॉल्स से पहले OPTIONS request क्यों भेजता है, और उसे फेल होने से कैसे रोकते हैं?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

वह OPTIONS कॉल CORS की preflight है। ब्राउज़र इसे तब भेजते हैं जब कोई cross origin request सादी नहीं होती, जिसमें कोई भी custom header, JSON content type, या GET, HEAD और POST से अलग कोई method शामिल है। आपके सर्वर को उस OPTIONS का जवाब ऐसे Access-Control-Allow-Origin, Allow-Methods और Allow-Headers के साथ देना होगा जो असली request को सच में कवर करें, और cookies शामिल हों तो Allow-Credentials तथा एक ठोस origin भी।

इंटरव्यूअर यह क्यों पूछते हैं

CORS ने सबको रोका है; समझा बहुत कम लोग पाते हैं। इंटरव्यूअर जानना चाहता है कि आप समझते हैं कि CORS ब्राउज़र की लागू की हुई नीति है जो यूज़र की हिफाज़त करती है, सर्वर का access control नहीं, क्योंकि जो उम्मीदवार यह चूकते हैं वे इसे बंद करने या ऐसे proxy लगाने की सलाह देते हैं जिनसे असली सुरक्षा छेद बनते हैं। सादी request के नियम गिना पाना दिखाता है कि आपने इसे ढंग से डिबग किया है, wildcard चिपकाया नहीं।

अपना जवाब कैसे स्ट्रक्चर करें

  • बताएं कि preflight किससे चलती है और सादी request किससे।
  • सर्वर को जो response headers लौटाने हैं, वे गिनाएं।
  • credentials वाला मामला और wildcards वहां क्यों फेल होते हैं, कवर करें।
  • साफ करें कि CORS ब्राउज़र के यूज़र की हिफाज़त करता है, आपके सर्वर की नहीं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

preflight असल में ब्राउज़र का वह सवाल है जो वह असर डालने वाली कोई चीज़ भेजने से पहले इजाज़त के लिए पूछता है। बिना किसी custom header वाली सादी GET सादी request है और सीधे चली जाती है, पर जिस पल आप Authorization header जोड़ते हैं या application/json भेजते हैं, पहले OPTIONS आ जाती है। जब वह फेल हो तो मैं तीन चीज़ें क्रम से जांचता हूं: सर्वर OPTIONS का जवाब देता भी है या नहीं, Access-Control-Allow-Headers में असली request के भेजे हर header का नाम है या नहीं, और origin बिल्कुल वैसा ही लौटाया जा रहा है या नहीं, scheme और port समेत। credentials वाला मामला लोगों को फंसा देता है, क्योंकि अगर आप cookies भेजते हैं तो wildcard origin इस्तेमाल नहीं कर सकते; आपको एक खास allowed origin लौटाना होगा और Access-Control-Allow-Credentials को true करना होगा। मैं Access-Control-Max-Age भी सेट करता हूं ताकि ब्राउज़र हर एक कॉल पर preflight करना बंद कर दे। जो बात मैं टीम को समझाकर छोड़ता हूं वह यह कि इनमें से कुछ भी API की हिफाज़त नहीं करता। जो ब्राउज़र नहीं है वह CORS को पूरी तरह अनदेखा करता है, तो authorization तो सर्वर पर ही लागू करनी होगी।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • credentials के साथ wildcard origin क्यों इस्तेमाल नहीं कर सकते?
  • Access-Control-Max-Age असल में क्या करता है?
  • किसी जायज़ तीसरे पक्ष के इस API को कॉल करने पर आप कैसे संभालेंगे?

फुल स्टैक डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं