Menu
CoddyTech

ما هو المصدر

جزء من قسم واجهات REST API في رحلة Node.js على Coddy. الدرس 18 من 25.

يتيح المتصفح عادةً لشفرة JavaScript في الصفحة قراءة استجابات API من النطاق الأصلي نفسه. تمنع قاعدة النطاق الأصلي نفسه الصفحة من قراءة بيانات موقع آخر بحرية. تتيح CORS، أي مشاركة الموارد عبر النطاقات، للخادم السماح لنطاق آخر بذلك من خلال ترويسات الاستجابة.

لصفحة المتصفح نطاق أصلي: يتكوّن معًا من المخطط والمضيف والمنفذ. يمكن للمسارات المختلفة ضمن النطاق الأصلي نفسه مشاركة API من دون إذن CORS. ويؤدي تغيير المضيف أو المخطط أو المنفذ إلى نطاق أصلي مختلف.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// المصدر نفسه

URL فئة مضمّنة تقرأ العنوان وتجزّئه إلى أجزاء مسماة. تستثني خاصية origin المسار والاستعلام. عنوان الصفحة المُعطى ثابت في الشيفرة الابتدائية. يقارن هذا التمرين بين النطاقات الأصلية؛ وستتيح الخطوة التالية للخادم منح الإذن عبرها.

يحتوي ترويس الطلب Origin بالفعل على قيمة هذا النطاق الأصلي؛ وستقرأ الترويسة في الدرس التالي.

challenge icon

التحدي

سهل

هذا مشروع تدريبي صغير. إعداد المشروع مُجهّز؛ عدّل exercise.js فقط.

أعِد {"same":true} عندما يشترك العنوان المُقدَّم مع الصفحة في الأصل، وإلا فأعِد false. يؤدي إرسال {"address":"https://board.example.com/api/tasks"} باستخدام POST إلى /result إلى القيمة true. يؤدي تغيير https إلى http، أو تغيير المضيف أو المنفذ، إلى القيمة false. العناوين في هذا التمرين هي عناوين URL مطلقة وصالحة.

يستخدم GET /result الأول المثال المُقدَّم {"address": "https://board.example.com/api/tasks"}. استخدم POST /result مع نص JSON لتجربة مدخلات أخرى.

جرّب بنفسك

const page = 'https://board.example.com/tasks';
export function exercise({ address }) {
    return { same: address === page };
}

جميع دروس واجهات REST API

تدرّب بنفسك: Playground لـ Express