यह समस्या क्या है?
CORS, या क्रॉसऑरिजिन रिसोर्स शेयरिंग, त्रुटियां सबसे आम समस्याओं में से एक हैं जिनका सामना डेवलपर्स को फ्रंटएंड पर रिएक्ट और बैकएंड पर Node.js के साथ फुलस्टैक एप्लिकेशन बनाते समय करना पड़ता है। ये त्रुटियाँ तब होती हैं जब कोई वेब एप्लिकेशन पेज परोसने वाले डोमेन, प्रोटोकॉल या पोर्ट से भिन्न डोमेन, प्रोटोकॉल या पोर्ट के लिए अनुरोध करने का प्रयास करता है। एक सामान्य रिएक्ट + नोड.जेएस सेटअप में, आपका रिएक्ट ऐप लोकलहोस्ट:3000 पर चल सकता है जबकि आपका एक्सप्रेस सर्वर लोकलहोस्ट:5000 पर चलता है, जिससे ब्राउज़र सुरक्षा प्रतिबंध ट्रिगर हो जाते हैं।
📋 Table of Contents
CORS, या क्रॉसऑरिजिन रिसोर्स शेयरिंग, त्रुटियां सबसे आम समस्याओं में से एक हैं जिनका सामना डेवलपर्स को फ्रंटएंड पर रिएक्ट और बैकएंड पर Node.js के साथ फुलस्टैक एप्लिकेशन बनाते समय करना पड़ता है। ये त्रुटियाँ…
यह समस्या त्रुटियों के रूप में प्रकट होती है जैसे ‘मूल ‘http://localhost:3000’ से ‘http://localhost:5000/api/data’ पर लाने की पहुंच CORS नीति द्वारा अवरुद्ध कर दी गई है: अनुरोधित संसाधन पर कोई ‘AccessControlAllowOrigin’ हेडर मौजूद नहीं है।’ शुरुआती लोग अक्सर निराश महसूस करते हैं क्योंकि कोड पोस्टमैन में काम करता है लेकिन ब्राउज़र में विफल हो जाता है। एपीआई के साथ काम करने वाले किसी भी आधुनिक वेब डेवलपर के लिए सीओआरएस को समझना आवश्यक है।
ऐसा क्यूँ होता है?

🎨 AI जेनरेटेड: ऐसा क्यों होता है?
मूल कारण ब्राउज़र की सेमऑरिजिन नीति में निहित है, एक सुरक्षा तंत्र जिसे दुर्भावनापूर्ण वेबसाइटों को अन्य डोमेन से संवेदनशील डेटा तक पहुंचने से रोकने के लिए डिज़ाइन किया गया है। जब रिएक्ट किसी भिन्न मूल पर Node.js सर्वर पर फ़ेच या एक्सियोस का उपयोग करके एपीआई कॉल करता है, तो ब्राउज़र प्रतिक्रिया को ब्लॉक कर देता है जब तक कि सर्वर स्पष्ट रूप से CORS हेडर के माध्यम से इसकी अनुमति नहीं देता है।
सुरक्षा कारणों से Node.js और Express डिफ़ॉल्ट रूप से CORS को सक्षम नहीं करते हैं। AccessControlAllowOrigin, AccessControlAllowMethods और AccessControlAllowHeaders जैसे हेडर के बिना, ब्राउज़र अनुरोध को अस्वीकार कर देता है। गैर-सरल तरीकों (PUT, DELETE, या कस्टम हेडर) के लिए प्रीफ़्लाइट विकल्प अनुरोध जैसे कारक समस्या को बढ़ा देते हैं। डेवलपर सर्वेक्षणों के डेटा से पता चलता है कि फुलस्टैक परियोजनाओं में 25% से अधिक एपीआई एकीकरण समस्याओं के लिए CORS त्रुटियाँ जिम्मेदार हैं।
चरणबद्ध समाधान
अपने रिएक्ट और Node.js एप्लिकेशन में CORS त्रुटियों को हल करने के लिए इन चरणों का पालन करें।
- अपने Node.js प्रोजेक्ट में cors मिडलवेयर स्थापित करें: npm install cors
- आयात करें और इसे अपनी एक्सप्रेस सर्वर फ़ाइल में उपयोग करें।
- उत्पादन सुरक्षा के लिए विशेष रूप से अनुमत मूल को कॉन्फ़िगर करें।
- यदि क्रेडेंशियल की आवश्यकता हो तो अपने रिएक्ट फ़ेच कॉल को अपडेट करें।
यहां संपूर्ण सर्वरसाइड कार्यान्वयन है:
जावास्क्रिप्ट
const express = require('express');
const cors = require('cors');
const app = express();
const corsOptions = {
origin: 'http://localhost:3000',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['ContentType', 'Authorization'],
credentials: true
};
app.use(cors(corsOptions));
app.use(express.json());
app.get('/api/data', (req, res) => {
res.json({ message: 'CORS fixed successfully!' });
});
app.listen(5000, () => console.log('Server running on port 5000'));
प्रतिक्रिया पक्ष पर, यदि कुकीज़ या प्रमाणीकरण का उपयोग कर रहे हैं तो क्रेडेंशियल के साथ फ़ेच का उपयोग करें:
जावास्क्रिप्ट
fetch('http://localhost:5000/api/data', {
method: 'GET',
credentials: 'include',
headers: {
'ContentType': 'application/json'
}
})
.then(res => res.json())
.then(data => console.log(data));
यह सेटअप सुनिश्चित करता है कि सर्वर उचित CORS हेडर के साथ प्रतिक्रिया दे, जिससे ब्राउज़र प्रतिक्रिया स्वीकार कर सके।
वैकल्पिक समाधान

🎨 एआई उत्पन्न: वैकल्पिक समाधान
कोर्स पैकेज से परे, इन तीन दृष्टिकोणों पर विचार करें। सबसे पहले, हल्के ऐप्स के लिए बिना मिडलवेयर के एक्सप्रेस में मैन्युअल रूप से हेडर सेट करें:
जावास्क्रिप्ट
app.use((req, res, next) => {
res.header('AccessControlAllowOrigin', 'http://localhost:3000');
res.header('AccessControlAllowHeaders', 'Origin, XRequestedWith, ContentType, Accept');
next();
});
दूसरा, विकास के दौरान रिएक्ट के package.json में एक प्रॉक्सी का उपयोग करें: \”प्रॉक्सी\”: \”http://localhost:5000\”। यह समान मूल के माध्यम से अनुरोधों को रूट करके CORS को पूरी तरह से डेव मोड में रखने से बचता है।
तीसरा, उत्पादन के लिए, लोकलहोस्ट और अपने तैनात डोमेन के बीच स्विच करने के लिए dotenv के साथ पर्यावरण आधारित कॉन्फ़िगरेशन लागू करें, जिससे पूरे वातावरण में लचीलापन सुनिश्चित हो सके।
बचने के लिए सामान्य गलतियाँ
डेवलपर्स अक्सर मूल को ‘*’ पर सेट करते हैं जो परीक्षण के लिए काम करता है लेकिन उत्पादन में सुरक्षा कमजोरियां पैदा करता है। हमेशा विशिष्ट डोमेन को श्वेतसूची में रखें। एक और गलती उड़ान पूर्व विकल्प अनुरोधों को संभालना भूल जाना है, जिसके कारण जटिल अनुरोध अवरुद्ध हो जाते हैं। एक्सप्रेस में रूट परिभाषाओं के बाद सीओआरएस कॉन्फ़िगरेशन रखने से बचें, क्योंकि मिडलवेयर ऑर्डर मायने रखता है। अंत में, प्रमाणीकरण टोकन या सत्र का उपयोग करते समय क्रेडेंशियल प्रबंधन को अनदेखा न करें।
वास्तविक दुनिया का उदाहरण

🎨 एआई जेनरेटेड: रियलवर्ल्ड उदाहरण
एक कार्य प्रबंधन ऐप पर विचार करें जहां रिएक्ट Node.js API से कार्य प्राप्त करता है। विशिष्ट मूल और क्रेडेंशियल्स के साथ कॉर्स मिडलवेयर को लागू करने के बाद, ऐप त्रुटियों के बिना डेटा को सफलतापूर्वक लोड करता है। उपयोगकर्ता कार्यों को निर्बाध रूप से बना सकते हैं, अपडेट कर सकते हैं और हटा सकते हैं। ब्राउज़र डेव टूल जैसे टूल के साथ मॉनिटरिंग, प्रतिक्रियाओं में मौजूद AccessControlAllowOrigin हेडर को दिखाता है, जो फिक्स की पुष्टि करता है। यह पैटर्न हजारों दैनिक अनुरोधों को संभालने वाले बड़े अनुप्रयोगों तक पहुंचता है।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: सीओआरएस पोस्टमैन में क्यों काम करता है लेकिन रिएक्ट में नहीं?
उत्तर: पोस्टमैन ब्राउज़र सेमऑरिजिन नीतियों को लागू नहीं करता है, इसलिए यह CORS जांचों को पूरी तरह से बायपास कर देता है।
प्रश्न: क्या मैं CORS को केवल ग्राहक पक्ष पर ही ठीक कर सकता हूँ?
उत्तर: नहीं, उचित हेडर भेजने के लिए CORS को सर्वर पर कॉन्फ़िगर किया जाना चाहिए; अकेले ग्राहक परिवर्तन अपर्याप्त हैं।
प्रश्न: मैं उत्पादन में एकाधिक उत्पत्ति को कैसे संभाल सकता हूँ?
ए: किसी डेटाबेस या कॉन्फ़िगरेशन से अनुमत डोमेन को गतिशील रूप से जांचने के लिए corsOptions.origin या फ़ंक्शन में एक सरणी का उपयोग करें।
प्रश्न: यदि मैं फ़ेच के बजाय एक्सिओस का उपयोग कर रहा हूँ तो क्या होगा?
उ: एक्सियोस समान सीओआरएस नियमों का सम्मान करता है; सुनिश्चित करें कि सर्वर हेडर सही ढंग से सेट हैं और प्रमाणन के लिए withCredentials: true शामिल हैं।
प्रश्न: क्या सीओआरएस को सक्षम करने से प्रदर्शन पर कोई प्रभाव पड़ता है?
उ: न्यूनतम प्रभाव होता है, मुख्य रूप से प्रीफ्लाइट अनुरोधों से, जिसे उचित कैशिंग हेडर के साथ कम किया जा सकता है।
निष्कर्ष

🎨 एआई उत्पन्न: निष्कर्ष
React और Node.js में CORS त्रुटियों को ठीक करने के लिए ब्राउज़र सुरक्षा और उचित सर्वर कॉन्फ़िगरेशन को समझने की आवश्यकता होती है। लक्षित सेटिंग्स के साथ कॉर्स मिडलवेयर का उपयोग करके, डेवलपर्स सुरक्षित, कार्यात्मक फुलस्टैक ऐप्स बना सकते हैं। पर्यावरण-विशिष्ट कॉन्फ़िगरेशन लागू करना याद रखें और मजबूत कार्यान्वयन के लिए सामान्य नुकसान से बचें। यह मार्गदर्शिका मुद्दों को शीघ्रता और आत्मविश्वास से हल करने के लिए आवश्यक सभी चीजें प्रदान करती है।
🚀 टेक वक्र से आगे रहें
दैनिक तकनीकी अंतर्दृष्टि, ईमानदार समीक्षाएँ और व्यावहारिक मार्गदर्शिकाएँ प्राप्त करें।
🔗 Share this article
✍️ Leave a Comment