![]() |
كيف تتجنب أخطاء CORS الشائعة عند تطوير APIs باستخدام Node.js |
كل ما تريد معرفتة عن Cors في NodeJs لإنشاء واجهات برمجة التطبيقات
في عالم تطوير الويب الحديث، أصبحت واجهات برمجة التطبيقات (APIs) جزءًا أساسيًا من بناء التطبيقات. ومع ذلك، عند إنشاء API باستخدام تقنيات مثل Node.js، قد تواجه مشكلة تتعلق بالأمان والوصول بين المتصفحات والمصادر المختلفة. هنا يأتي دور CORS (Cross-Origin Resource Sharing) ، وهي تقنية تُستخدم للتحكم في كيفية تبادل البيانات بين مصادر مختلفة.
في هذا المقال، سنتناول كل ما تحتاج إلى معرفته حول CORS في Node.js، بما في ذلك مفهومها، أهميتها، وكيفية استخدام مكتبة CORS لتسهيل عملية إنشاء واجهات برمجة التطبيقات.
ما هي مكتبة CORS؟
منصة برمجه CORS (مشاركة الموارد عبر المنشأ) هي آلية أمان تسمح لمواقع الويب بالوصول إلى الموارد من مواقع أخرى ، تستخدم بشكل كبير لبناء واجهات برمجة التطبيقات حتى يتفاعل backend مع ui بدون مشاكل واكثر المشاكل التي نقابلها في البرمجة الحاسوبية وهيا اختلاف ال port وهذه المكتبة تحل لنا هذه المشكلة .
ما هو المصدر (Origin)؟
المصدر هو مزيج من البروتوكول (HTTP أو HTTPS)، اسم النطاق (Domain)، والمنفذ (Port). على سبيل المثال:
http://example.com
https://api.example.com:3000
مميزات مكتبة CORS:
- تحسين الأمان: تمنع CORS مواقع الويب الضارة من الوصول إلى البيانات الحساسة.
- تحسين قابلية الاستخدام: تسمح CORS لمواقع الويب بالعمل مع بعضها البعض بشكل أكثر سلاسة.
- تحسين الأداء: تقلل CORS من عدد طلبات HTTP اللازمة للوصول إلى الموارد من مواقع أخرى.
كيف تعمل مكتبة CORS؟
- رأس Origin: يُحدد موقع الويب الذي يطلب الوصول إلى المورد.
- رأس Access-Control-Allow-Origin: يُحدد مواقع الويب التي يُسمح لها بالوصول إلى المورد.
- رأس Access-Control-Allow-Headers: يُحدد رؤوس HTTP التي يُسمح لمواقع الويب بإرسالها مع طلبات الوصول إلى المورد.
- رأس Access-Control-Allow-Methods: يُحدد الطرق HTTP التي يُسمح لمواقع الويب باستخدامها للوصول إلى المورد.
أهمية استخدام CORS
- الأمان : تمنع المواقع غير المصرح بها من الوصول إلى مواردك الحساسة.
- التحكم : تتيح لك تحديد المصادر والأساليب المسموح بها بدقة.
- سهولة التكامل : تجعل مكتبة CORS من السهل إعداد السياسات دون الحاجة إلى كتابة كود مخصص.
كيفية استخدام مكتبة CORS في Node.js؟
npm i cors
const cors = require('cors');
const app = express();app.use(cors());
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/api/data', (req, res) => {
res.json({ message: 'هذه بيانات من API!' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`الخادم يعمل على المنفذ ${PORT}`);
});