Menu
CoddyTech

السماح لمصدر آخر

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

تحتاج صفحة على أحد الأصول إلى إذن لقراءة استجابة واجهة برمجة تطبيقات من أصل آخر. يرسل المتصفح ترويسة الطلب Origin. ويمكن لواجهة برمجة التطبيقات أن تردّ بترويسة Access-Control-Allow-Origin التي تحدد الأصل المسموح به.

if (req.get('origin') === 'https://shop.example.com') {
    res.set('Access-Control-Allow-Origin', 'https://shop.example.com');
}

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

تقرأ req.get('origin') ترويسة Origin في الطلب. ولا تتأثر أسماء الترويسات بحالة الأحرف.

challenge icon

التحدي

سهل

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

في مسار GET المزوّد، اضبط Allow-Origin فقط عندما يساوي Origin https://board.example.com. أبقِ استجابة JSON. شغّل المشروع، ثم أرسل GET إلى /result مع ترويسة Origin تلك: يجب أن تطابق ترويسة الاستجابة ذلك. لن يحصل Origin مختلف أو مفقود على ترويسة Allow-Origin.

في حقل Headers بشريط الطلب، أدخل Origin: https://board.example.com. افحص ترويسات الاستجابة لرؤية الإذن.

جرّب بنفسك

import express from 'express';
const app = express();
app.get('/result', (req, res) => {
    res.json({ ok: true });
});
app.listen(3000);

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

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