cookies सिर्फ तब इस्तेमाल करें जब सर्वर को हर request पर वह value चाहिए, और संवेदनशील किसी भी चीज़ पर HttpOnly, Secure और SameSite लगाएं। जो state tab के साथ ही खत्म हो जानी चाहिए उसके लिए sessionStorage, restart के बाद भी बची रहने वाली छोटी synchronous key value डेटा के लिए localStorage, और बड़ी, structured या asynchronous चीज़ों के लिए IndexedDB। tokens या निजी डेटा कभी localStorage में न रखें, क्योंकि पेज पर मौजूद कोई भी script उसे पढ़ सकती है।
इंटरव्यूअर यह क्यों पूछते हैं
यह देखने में सामान्य ज्ञान का सवाल लगता है पर असल में सिक्योरिटी का सवाल है। इंटरव्यूअर देखना चाहता है कि आपको पता है कि localStorage को कोई भी injected script पढ़ सकती है, कि localStorage synchronous है इसलिए main thread रोकती है, और कि cookies हर एक request पर bandwidth खर्च करती हैं। IndexedDB कब उसकी जटिलता के लायक है, यह जानना यह भी बताता है कि आपने सिर्फ CRUD स्क्रीन नहीं, offline चलने लायक कुछ बनाया है।
अपना जवाब कैसे स्ट्रक्चर करें
- विकल्पों को इससे छांटें कि सर्वर को क्या चाहिए और सिर्फ client को क्या।
- साफ कहें कि localStorage synchronous है और same origin पर पढ़ी जा सकती है।
- token वाला नियम और cookie के वे flags बताएं जो आप लगाते हैं।
- बताएं कि IndexedDB अपनी जटिलता कहां कमाता है।
उदाहरण जवाब
मेरा पहला सवाल यह है कि सर्वर को इसकी ज़रूरत है या नहीं। अगर है तो यह cookie है, और उस पर HttpOnly, Secure और SameSite लगते हैं, जिसका मतलब यह भी है कि मेरा JavaScript उसे पढ़ता ही नहीं। अगर सिर्फ client को चाहिए तो बात उम्र और आकार पर आ जाती है। tab तक सीमित चीज़ों के लिए sessionStorage, जैसे wizard का कदम या ऐसी scroll position जिसे मैं दूसरे tab में नहीं ले जाना चाहता। छोटी टिकाऊ पसंदों के लिए localStorage, theme, आखिरी इस्तेमाल किया गया filter, वैसी चीज़ें, और मैं उसे छोटा रखता हूं क्योंकि वह synchronous है, तो startup पर parse होने वाला बड़ा JSON सीधे मेरे time to interactive में दिखता है। डेटा बड़ा या structured हो जाए तो IndexedDB, मसलन offline इस्तेमाल के लिए records की cached list, आमतौर पर किसी छोटे wrapper के पीछे क्योंकि कच्चा API सुखद नहीं है। जो नियम मैं नहीं तोड़ता वह यह कि access tokens localStorage में नहीं जाते, क्योंकि कोई भी injected script उन्हें पढ़ सकती है; वे HttpOnly cookie में या सिर्फ memory में रहते हैं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- session token के लिए HttpOnly cookie localStorage से सुरक्षित क्यों है?
- दो खुले tabs को एक ही सहेजी हुई state पर कैसे मिलाकर रखेंगे?
- आप किन storage की सीमाओं और eviction नियमों को ध्यान में रखकर योजना बनाते हैं?
फ्रंटएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें