مدقق CORS
تحقق من تكوين مشاركة الموارد عبر المصدر (CORS) لأي عنوان URL. افحص رؤوس استجابة Access-Control-*، وقم بتشغيل طلب اختياري لما قبل الطيران (OPTIONS) مع أصل/طريقة/رؤوس مخصصة، واكتشف التكوينات الخاطئة الشائعة مثل النمط العام + بيانات الاعتماد، أو فقدان Vary: Origin، أو رؤوس السماح الواسعة جدًا.
الميزات
- فحص رؤوس CORS لأي عنوان URL عام (رؤوس Access-Control-* والرؤوس ذات الصلة).
- محاكاة اختيارية لطلب ما قبل الطيران (OPTIONS) مع أصل مخصص، وطريقة طلب، ورؤوس طلب.
- اتبع إعادة التوجيه (حتى 10) حتى تتمكن من التحقق من نقطة النهاية النهائية التي يصل إليها المتصفحات بالفعل.
- عرض الرؤوس الخام للشفافية الكاملة وتصحيح الأخطاء.
- النتائج + بطاقة النقاط مع تصفية "المشاكل فقط" للفرز السريع.
- تحليل Vary للكشف عن فقدان Vary: Origin ومزالق CORS الأخرى المتعلقة بالذاكرة المؤقتة.
- تصدير النتائج كتقارير JSON و PDF للمراجعات والتذاكر والتوثيق.
- توصيات مدمجة للمشاكل الشائعة: النمط العام+بيانات الاعتماد، عكس الأصل، الأصل الفارغ، فقدان طرق/رؤوس السماح، فقدان max-age، ورؤوس السماح الواسعة جدًا.
🧭 كيفية الاستخدام for cors-checker
أدخل عنوان URL الهدف
الصق نقطة النهاية التي تريد اختبارها (مثال: https://api.example.com/resource).
حدد الأصل الذي تختبر منه
أدخل أصل تطبيق الواجهة الأمامية الخاص بك (المخطط + المضيف)، مثال: https://app.example.com. هذه هي القيمة التي يرسلها المتصفحات في رأس الأصل.
اختر وضع الفحص
استخدم التلقائي (موصى به) لتحليل كل من رؤوس الاستجابة وسلوك ما قبل الطيران. استخدم طلب بسيط إذا كنت تريد على وجه التحديد سيناريو بدون طلب ما قبل الطيران، أو ما قبل الطيران فقط لتشغيل فحوصات OPTIONS.
قم بتكوين تفاصيل طلب ما قبل الطيران (إذا كان ذلك مناسبًا)
قم بتمكين "تشغيل طلب ما قبل الطيران (OPTIONS)" وحدد طريقة الطلب بالإضافة إلى رؤوس الطلب (مفصولة بفواصل) لمحاكاة سلوك طلب ما قبل الطيران الحقيقي في المتصفح (مثال: التفويض، نوع المحتوى). قم بتبديل "اعتبار بيانات الاعتماد" إذا كانت حالة استخدامك تتضمن ملفات تعريف الارتباط أو رؤوس المصادقة.
راجع النتائج وقم بالتصدير
تحقق من النتائج/بطاقة النقاط وتفاصيل تحليل CORS. قم بتشغيل "إظهار الرؤوس الخام" عند تصحيح الأخطاء. قم بتصدير JSON/PDF للمشاركة أو التخزين في المراجعات.
المواصفات الفنية
نموذج الطلب
تفحص الأداة رؤوس CORS لعنوان URL هدف ويمكنها اختياريًا تنفيذ طلب ما قبل الطيران (OPTIONS) باستخدام الأصل المقدم، والطريقة، والرؤوس المطلوبة. يتم دعم متابعة إعادة التوجيه.
| الإعداد | السلوك | الافتراضي |
|---|---|---|
| وضع الفحص | تلقائي، طلب بسيط، أو طلب تمهيدي فقط | تلقائي |
| تشغيل الطلب التمهيدي (OPTIONS) | إذا تم تمكينه، يقوم بمحاكاة طلب OPTIONS تمهيدي | مُمكّن |
| الأصل | قيمة رأس الأصل المستخدمة للتحليل/الطلب التمهيدي | https://example.com |
| طريقة الطلب | قيمة Access-Control-Request-Method للطلب التمهيدي | GET |
| رؤوس الطلب | Access-Control-Request-Headers (مفصولة بفواصل) للطلب التمهيدي | فارغ |
| متابعة إعادة التوجيه | يتتبع سلسلة إعادة التوجيه إلى الرابط النهائي | مُمكّن |
| الحد الأقصى لإعادة التوجيه | حد إعادة التوجيه لمنع الحلقات | 10 (نطاق 0–20) |
| المهلة | حد مهلة الطلب | 15000 مللي ثانية |
| وكيل المستخدم | يحدد وكيل المستخدم للطلب | Encode64Bot/1.0 (+https://encode64.com) |
| الشبكات الخاصة | يمنع الوصول إلى نطاقات الشبكات الخاصة لأسباب أمنية | معطّل (الشبكات الخاصة غير مسموح بها) |
الرؤوس التي تم تحليلها (مجموعة CORS الأساسية)
يركز المحلل على رؤوس استجابة وطلب CORS القياسية المستخدمة من قبل المتصفحات وفحوصات الطلبات التمهيدية.
| الرأس | الغرض |
|---|---|
| Access-Control-Allow-Origin | الأصل (الأصول) المسموح بها |
| Access-Control-Allow-Credentials | ما إذا كانت ملفات تعريف الارتباط/بيانات الاعتماد مسموح بها (تتطلب أصل غير شامل) |
| Access-Control-Allow-Methods | الطرق المسموح بها لطلبات المصادر المتقاطعة (مهمة للفحص المسبق) |
| Access-Control-Allow-Headers | الرؤوس المسموح بها (مهمة للترخيص والرؤوس المخصصة) |
| Access-Control-Expose-Headers | أي الرؤوس يمكن لـ JavaScript في المتصفح قراءتها |
| Access-Control-Max-Age | المدة التي يمكن للمتصفح خلالها تخزين نتيجة الفحص المسبق مؤقتًا |
| Vary | تغيير مفتاح التخزين المؤقت (مثل: Vary: Origin) لمنع تسميم أو خلط الذاكرة المؤقتة |
| Origin / Access-Control-Request-* | تُستخدم لمحاكاة سلوك الفحص المسبق |
الاستدلالات (المزالق الشائعة لـ CORS التي يتم تمييزها)
تستند النتائج إلى فحوصات عملية تركز على الأمان للكشف عن إعدادات CORS المعطلة أو المحفوفة بالمخاطر.
| الفحص | سبب الأهمية |
|---|---|
| النمط العام + بيانات الاعتماد | لا يمكن استخدام Access-Control-Allow-Origin: * مع بيانات الاعتماد؛ سيقوم المتصفح بحظرها أو يكون السلوك غير آمن |
| غياب Vary: Origin | إذا اختلفت الاستجابات حسب الأصل ولم يتم تخزينها مؤقتًا بشكل صحيح، فقد تخلط ذواكر التخزين المؤقت المشتركة الاستجابات بين المواقع |
| عكس الأصل | تكرار الأصل بشكل أعمى قد يسمح عن غير قصد بأصول غير موثوقة |
| تحذيرات الأصل الفارغ | قد يظهر Origin: null في إطارات iframe المعزولة أو سياقات الملفات؛ السماح به غالبًا ما يكون محفوفًا بالمخاطر |
| غياب Allow-Methods / Allow-Headers | قد يفشل الفحص المسبق إذا لم يصرح الخادم صراحةً بالطريقة/الرؤوس |
| Allow-Headers واسع النطاق | السماح بعدد كبير جدًا من الرؤوس يمكن أن يوسع نطاق الهجوم |
| غياب Max-Age | قد يتم تشغيل الفحص المسبق بشكل متكرر جدًا، مما يزيد من زمن الوصول |
سطر الأوامر
استخدم هذه الأوامر لإعادة إنتاج سلوك CORS والفحص المسبق من طرفيتك. إنها مفيدة لتصحيح الأخطاء والتحقق مما يبلغ عنه الأداة.
macOS / Linux
تحقق من رؤوس CORS لطلب عادي (محاكاة أصل متصفح)
curl -i -H "Origin: https://example.com" https://api.example.com/resourceابحث عن Access-Control-Allow-Origin و Access-Control-Allow-Credentials و Vary.
تشغيل طلب فحص مسبق OPTIONS (طريقة + رؤوس)
curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/privateيجب أن يعود الفحص المسبق بـ Access-Control-Allow-Methods و Access-Control-Allow-Headers الصحيحين حتى يتمكن المتصفح من المتابعة.
اتبع عمليات إعادة التوجيه أثناء التحقق من الرؤوس
curl -iL -H "Origin: https://example.com" https://api.example.comمفيد عندما تعيد النقاط الطرفية التوجيه إلى مضيف مختلف لديه قواعد CORS مختلفة.
ويندوز (PowerShell)
افحص رؤوس الاستجابة مع رأس Origin
$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headersيعرض رؤوس Access-Control-* إذا كانت موجودة.
حالات الاستخدام
تصحيح خطأ المتصفح "تم حظر CORS" في الواجهة الأمامية
عندما يفشل fetch/XHR بخطأ CORS، تحقق مما إذا كان الخادم يُرجع رؤوس Access-Control-* المطلوبة لمصدرك ونوع طلبك.
- تأكد من أن Access-Control-Allow-Origin يتطابق مع مصدر تطبيقك
- إذا كنت تستخدم ملفات تعريف الارتباط/المصادقة، تحقق من أن Access-Control-Allow-Credentials هو true (وأن المصدر ليس حرف البدل *)
- تأكد من وجود Vary: Origin عند السماح بعدة مصادر
التحقق من الطلب التمهيدي (preflight) للمصادقة / الرؤوس المخصصة
معظم طلبات API المصادق عليها تُطلق طلبًا تمهيديًا بسبب رأس Authorization أو أنواع المحتوى غير البسيطة. تساعد هذه الأداة في التأكد من أن استجابات OPTIONS تسمح بالطريقة والرؤوس المطلوبة.
- تحقق من أن Access-Control-Allow-Methods يتضمن POST/PUT/PATCH/DELETE حسب الحاجة
- تحقق من أن Access-Control-Allow-Headers يتضمن authorization و content-type والرؤوس X-* المطلوبة
- اكتشف رؤوس allow-methods/allow-headers المفقودة قبل النشر
مراجعة أمان سياسة CORS
يمكن لإعدادات CORS الخاطئة أن تعرض واجهات API الخاصة لمواقع ضارة عن غير قصد (خاصة مع بيانات الاعتماد). استخدم النتائج لاكتشاف الأنماط عالية الخطورة.
- اكتشف استخدام حرف البدل (*) للمصدر مع بيانات الاعتماد
- اكتشف أنماط عكس المصدر التي تسمح بمواقع عشوائية
- ضع علامة على السماح بـ Origin: null عندما لا يكون مقصودًا
تحسين الأداء عن طريق تخزين الطلب التمهيدي مؤقتًا
تضيف طلبات preflight جولات اتصال وزمن انتقال. يمكن لـ Max-Age الصحيح تقليل عمليات التحقق التمهيدية المتكررة لواجهات API المستقرة.
- تحقق من وجود Access-Control-Max-Age عندما يكون مناسبًا
- قلل من استدعاءات OPTIONS المتكررة لحركة مرور API المتكررة
❓ Frequently Asked Questions
❓ما هو CORS بمصطلحات بسيطة؟
CORS (مشاركة الموارد عبر المصادر) هو آلية أمان في المتصفح تتحكم فيما إذا كانت صفحة ويب من مصدر واحد (البروتوكول + المضيف + المنفذ) يمكنها قراءة استجابات من مصدر آخر. يعتمد على رؤوس استجابة Access-Control-* محددة.❓متى يرسل المتصفح طلبًا تمهيديًا (OPTIONS)؟
❓لماذا يُعد "Access-Control-Allow-Origin: *" خطيرًا مع بيانات الاعتماد؟
❓لماذا أحتاج إلى Vary: Origin؟
❓هل يمكن لـ CORS حماية واجهة برمجة التطبيقات (API) الخاصة بي من العملاء غير المتصفح؟
CORS بواسطة المتصفحات. يمكن للنصوص البرمجية التي تعمل خارج المتصفح (الخوادم، curl، تطبيقات الهاتف المحمول) استدعاء واجهة برمجة التطبيقات (API) الخاصة بك بغض النظر عن CORS. استخدم المصادقة والتفويض وتحديد معدل الطلبات للتحكم الحقيقي في الوصول.❓ماذا يجب أن أضع في "رؤوس الطلب" عند اختبار الطلب المسبق (preflight)؟
❓هل من الآمن لصق عناوين URL هنا؟
Pro Tips
يفضل استخدام قائمة السماح بالأصول الموثوقة بدلاً من عكس أي أصل (Origin). تعامل مع CORS كإعداد حساس للأمان.
إذا كنت تستخدم ملفات تعريف الارتباط/المصادقة، اضبط Access-Control-Allow-Credentials: true وقم بإرجاع أصل صريح (ليس "*").
أضف Vary: Origin عند السماح بأصول متعددة أو عند اختيار الأصل المسموح به ديناميكيًا.
أضف قيمة معقولة لـ Access-Control-Max-Age لتقليل زمن الوصول للطلب المسبق لواجهات برمجة التطبيقات المستقرة.
اختبر كل من مسار الطلب المسبق والطلب الحقيقي؛ فبعض الإعدادات تُرجع رؤوسًا صحيحة لـ GET ولكنها تفشل في OPTIONS.
قم بتصدير تقارير JSON واحتفظ بها جنبًا إلى جنب مع تغييرات تكوين بوابة واجهة برمجة التطبيقات لاكتشاف التراجعات بسرعة.
Additional Resources
Other Tools
- محسن CSS
- محسن HTML
- محسن Javascript
- محسن PHP
- منتقي الألوان
- مستخرج Sprite
- مُشَفِّر ثنائي Base32
- فَكَّاك Base32
- مُشَفِّر Base32
- مُشَفِّر ثنائي Base58
- فَكَّاك Base58
- مُشَفِّر Base58
- مُشَفِّر ثنائي Base62
- فَكَّاك Base62
- مُشَفِّر Base62
- مُشَفِّر ثنائي Base64
- فك تشفير Base64
- تشفير Base64
- مُشَفِّر ثنائي سداسي عشري
- فَكَّاك سداسي عشري
- مُشَفِّر سداسي عشري
- منسق Csharp
- منسق CSV
- Dockerfile Formatter
- منسق Elm
- منسق ENV
- منسق Go
- منسق Graphql
- منسق Hcl
- منسق INI
- منسق JSON
- منسق Latex
- منسق Markdown
- منسق Objectivec
- Php Formatter
- منسق Proto
- منسق Python
- منسق Ruby
- منسق Rust
- منسق Scala
- منسق سكريبت Shell
- منسق SQL
- منسق SVG
- منسق Swift
- منسق TOML
- Typescript Formatter
- منسق XML
- منسق YAML
- منسق Yarn
- مختصر CSS
- Html Minifier
- Javascript Minifier
- مختصر JSON
- مصغر XML
- Cache Headers Analyzer
- Csp Analyzer
- Dns Records Lookup
- عارض رؤوس HTTP
- Http Status Checker
- Open Graph Meta Checker
- Redirect Chain Viewer
- Robots Txt Tester
- Security Headers Checker
- Security Txt Checker
- Sitemap Url Inspector
- Tls Certificate Checker
- PDF إلى نص
- مختبر Regex
- مدقق ترتيب SERP
- بحث Whois