تكرار السؤال: …
الإجابة المختصرة
CORS هي آلية أمان تطبقها المتصفحات لمنع المواقع الخارجية من قراءة بياناتك؛ وطلب الـ Preflight هو طلب OPTIONS يرسله المتصفح قبل الطلب الفعلي للتحقق من السماح بالعملية.
الشرح
تطلب المتصفحات موافقة صريحة من الخادم عندما يحاول تطبيق جافاسكريبت قراءة استجابة من نطاق مختلف. إذا احتوى الطلب على ترويسات غير قياسية (مثل Authorization) أو أساليب غير بسيطة (مثل PUT أو DELETE أو POST مع JSON)، يرسل المتصفح أولاً طلب OPTIONS (Preflight). يجب على الخادم الرد بترويسات Access-Control-Allow-Origin وAccess-Control-Allow-Methods المناسبة.
مثال بالكود
import cors from "cors";
app.use(cors({
origin: "https://my-frontend.com",
methods: ["GET", "POST", "PUT", "DELETE"],
credentials: true
}));أخطاء شائعة
- تعيين Access-Control-Allow-Origin: * مع تفعيل credentials: true وهو ما ترفضه المتصفحات أمنياً.