البرمجة

فهم CORS وتحسين Fetch API في جافاسكربت

في عالم تطوير الويب الحديث، تظهر تحديات متزايدة عند مواجهة الحاجة إلى إجراء طلبات من مصادر مختلفة عبر المنشأ (Cross-Origin). هذا يشمل حالات استخدام الـ Fetch API في جافاسكربت، حيث يصبح من الضروري التعامل مع سياسات الأمان المفروضة من قبل المتصفح.

للتعامل مع طلبات Fetch التي تأتي من أصل مختلف، يجب عليك فهم كيفية التعامل مع سياسات Cross-Origin Resource Sharing (CORS). CORS هو نظام يتيح للمتصفح التحقق من ما إذا كان يسمح بطلب معين من مصدر معين أو لا.

أولًا وقبل كل شيء، يجب عليك التأكد من أن الخادم الذي تحاول الاتصال به يرسل رؤوس (headers) CORS المناسبة. يمكنك القيام بذلك عن طريق تضمين رأس Access-Control-Allow-Origin في استجابة الخادم، والذي يحدد الأصل المسموح به للطلب.

على سبيل المثال، يمكن أن يكون رأس الـ CORS كالتالي:

javascript
Access-Control-Allow-Origin: https://المصدر-المسموح-منه.com

في حال كنت بصدد تطوير تطبيق ويب يعتمد على Fetch API، يفضل أن تتبع مبدأ التفاوض لتحديد ما إذا كانت الطلبات مسموح بها أم لا. يمكنك إدراج التفاوض كجزء من كود الجافاسكربت الخاص بك باستخدام Fetch. على سبيل المثال:

javascript
fetch('https://الخادم.com/api/data', { method: 'GET', mode: 'cors', // يفصل بين الطلبات الـ same-origin والـ cross-origin headers: { 'Content-Type': 'application/json', // يمكنك إضافة المزيد من الرؤوس حسب الحاجة }, }) .then(response => response.json()) .then(data => { // قم بمعالجة البيانات هنا }) .catch(error => { // قم بمعالجة الأخطاء هنا });

لاحظ أن استخدام خاصية mode: 'cors' يعني أنك تقوم بطلب عبر المنشأ، ويمكن أن يتطلب هذا التفاوض بين الطرفين (المتصفح والخادم). يجب عليك أيضًا التأكد من تضمين التصاريح (permissions) الصحيحة في ملفات مشروعك.

من الجيد أن تكون على دراية بمفاهيم CORS وتطبيقها بشكل صحيح لتجنب القضايا المحتملة المتعلقة بأمان المتصفح وضمان تفاعل سلس لتطبيقك على الويب.

المزيد من المعلومات

بالطبع، دعونا نعمق أكثر في مفهوم CORS وكيفية التعامل معه أثناء استخدام Fetch API في جافاسكربت.

1. تضمين رؤوس إضافية:

للتعامل مع متطلبات CORS، قد تحتاج إلى تضمين رؤوس إضافية في طلبك. على سبيل المثال، يمكنك تضمين رأس Credentials إذا كنت بحاجة إلى تضمين معلومات اعتماد (مثل الارتباطات) مع الطلب:

javascript
fetch('https://الخادم.com/api/data', { method: 'GET', mode: 'cors', headers: { 'Content-Type': 'application/json', 'Credentials': 'include', // يشير إلى ضرورة تضمين معلومات اعتماد // يمكنك إضافة المزيد من الرؤوس حسب الحاجة }, }) .then(response => response.json()) .then(data => { // قم بمعالجة البيانات هنا }) .catch(error => { // قم بمعالجة الأخطاء هنا });

2. التعامل مع الأخطاء المحتملة:

يجب أن تكون على دراية بأن طلبات Fetch يمكن أن تفشل بسبب قيود الأمان المفروضة من قبل المتصفح. عند فشل الطلب بسبب مشكلات CORS، قد يتم رفض الوصول ويتم إرجاع خطأ. يمكنك التعامل مع هذه الأخطاء وإدارتها بشكل مناسب في مقطع الـ catch:

javascript
.catch(error => { if (error.name === 'TypeError') { // إما أن يكون هناك مشكلة في الشبكة أو الخادم غير متاح } else if (error.name === 'SecurityError') { // يمكن أن يحدث عندما تكون هناك مشكلة متعلقة بالأمان، مثل سياسات CORS } else { // معالجة الأخطاء الأخرى } });

3. التحقق من رؤوس الاستجابة:

قد تحتاج أيضًا إلى التحقق من رؤوس الاستجابة من الخادم لضمان أنه يُسمح بالوصول من المصدر الذي تأتي منه الطلبات. يمكن أن يكون لديك كود يشبه هذا:

javascript
.then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); })

ختامية:

تعتبر فهم CORS وكيفية التعامل معها أمرًا حاسمًا عند تطوير تطبيقات الويب الحديثة. يساعدك الالتزام بمبادئ التفاوض وضبط رؤوس الطلبات والاستجابات في تحقيق تفاعل سلس وآمن بين تطبيقك والخوادم الأخرى عبر الإنترنت.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر