CORS (Cross-Origin Resource Sharing)

From binaryoption
Jump to navigation Jump to search

```

  1. CORS (مشاركة الموارد عبر المصادر)

مشاركة الموارد عبر المصادر (CORS) هي آلية أمان متصفح تتيح أو تمنع تطبيقات الويب من إجراء طلبات إلى موارد من نطاق مختلف عن النطاق الذي تم تقديم التطبيق منه. هذا المقال يقدم شرحًا مفصلًا لـ CORS للمبتدئين، مع التركيز على أهميته وكيفية عمله وكيفية التعامل معه في سياق تطوير الويب، مع إشارات ذات صلة بتجارة الخيارات الثنائية و التحليل الفني و حجم التداول.

== ما هي مشكلة CORS ولماذا نحتاجها؟

في الأصل، تم تصميم متصفحات الويب لتطبيق سياسة أصل واحد (Same-Origin Policy). هذه السياسة هي آلية أمان حاسمة تمنع موقع ويب من الوصول إلى البيانات من موقع ويب آخر، إلا إذا سمح الموقع الآخر بذلك صراحةً. هذا يحمي المستخدمين من الهجمات مثل الاحتيال عبر المواقع (Cross-Site Scripting - XSS) و تزوير الطلبات عبر المواقع (Cross-Site Request Forgery - CSRF).

تُعرّف "الأصل" بثلاثة مكونات:

  • البروتوكول (Protocol): مثل http أو https.
  • المضيف (Host): مثل example.com.
  • المنفذ (Port): مثل 80 أو 443.

إذا كانت هذه المكونات الثلاثة متطابقة بين موقعين، فإنهما يعتبران من نفس الأصل.

لكن في عالم الويب الحديث، غالبًا ما تحتاج تطبيقات الويب إلى الوصول إلى موارد من نطاقات مختلفة. على سبيل المثال:

  • تطبيق ويب يستضيف على example.com يحتاج إلى الحصول على بيانات من واجهة برمجة تطبيقات (API) تستضيف على api.example.net.
  • تطبيق ويب يستخدم خطوطًا من Google Fonts (fonts.googleapis.com).
  • تطبيق ويب يستخدم صورًا من CDN (شبكة توصيل المحتوى) على cdn.example.org.

هنا يأتي دور CORS. CORS هي آلية تسمح للخادم بتحديد ما إذا كان سيسمح للمتصفح بالوصول إلى موارده من نطاق مختلف. إنها طريقة لـ "توسيع" سياسة الأصل الواحد بطريقة آمنة ومتحكم فيها.

== كيف يعمل CORS؟

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

1. **التحقق من رأس HTTP `Origin`:** يضيف المتصفح تلقائيًا رأس `Origin` إلى الطلب. يحتوي هذا الرأس على الأصل الذي أُرسل منه الطلب. 2. **التحقق من رأس HTTP `Access-Control-Allow-Origin`:** يتحقق الخادم من رأس `Access-Control-Allow-Origin` في استجابته. هذا الرأس يحدد النطاقات المسموح لها بالوصول إلى المورد.

   *   إذا كانت قيمة `Access-Control-Allow-Origin` هي `*`، فهذا يعني أن أي نطاق مسموح له بالوصول. (يجب استخدام هذا بحذر لأسباب أمنية).
   *   إذا كانت قيمة `Access-Control-Allow-Origin` هي نطاق محدد (مثل `https://example.com`)، فهذا يعني أن نطاق example.com فقط مسموح له بالوصول.

3. **طلبات Preflight (OPTIONS):** بالنسبة للطلبات "المعقدة" (Complex Requests) – التي تستخدم أساليب HTTP بخلاف GET و HEAD و POST، أو التي تحتوي على رؤوس HTTP مخصصة – يقوم المتصفح بإرسال طلب "preflight" باستخدام طريقة HTTP `OPTIONS` قبل إرسال الطلب الفعلي.

   *   يتحقق الخادم من رأس `Access-Control-Allow-Methods` في استجابته لـ `OPTIONS` لتحديد أساليب HTTP المسموح بها.
   *   يتحقق الخادم من رأس `Access-Control-Allow-Headers` في استجابته لـ `OPTIONS` لتحديد رؤوس HTTP المسموح بها.
   *   إذا كان الخادم لا يسمح بأسلوب HTTP أو رأس HTTP المستخدم في الطلب الفعلي، فلن يكمل المتصفح الطلب.

== أنواع طلبات CORS

هناك نوعان رئيسيان من طلبات CORS:

  • **Simple Requests (الطلبات البسيطة):** هذه هي الطلبات التي تستخدم أساليب HTTP GET و HEAD و POST، ولا تحتوي على رؤوس HTTP مخصصة. لا تتطلب هذه الطلبات طلب preflight.
  • **Complex Requests (الطلبات المعقدة):** هذه هي الطلبات التي تستخدم أساليب HTTP بخلاف GET و HEAD و POST، أو التي تحتوي على رؤوس HTTP مخصصة. تتطلب هذه الطلبات طلب preflight.

| نوع الطلب | أسلوب HTTP | رؤوس مخصصة | طلب Preflight | |---|---|---|---| | بسيط | GET, HEAD, POST | لا | لا | | معقد | PUT, DELETE, PATCH, OPTIONS | نعم | نعم |

== رؤوس HTTP المستخدمة في CORS

| الرأس | الوصف | |---|---| | `Origin` | يرسله المتصفح للإشارة إلى الأصل الذي أُرسل منه الطلب. | | `Access-Control-Allow-Origin` | يرسله الخادم للإشارة إلى النطاقات المسموح لها بالوصول إلى المورد. | | `Access-Control-Allow-Methods` | يرسله الخادم للإشارة إلى أساليب HTTP المسموح بها. | | `Access-Control-Allow-Headers` | يرسله الخادم للإشارة إلى رؤوس HTTP المسموح بها. | | `Access-Control-Allow-Credentials` | يرسله الخادم للإشارة إلى ما إذا كان سيتم تضمين بيانات الاعتماد (مثل ملفات تعريف الارتباط) في الطلب. | | `Access-Control-Max-Age` | يرسله الخادم لتحديد المدة التي يمكن للمتصفح تخزين نتائج طلب preflight. |

== التعامل مع CORS في تطبيقات الويب

هناك عدة طرق للتعامل مع CORS في تطبيقات الويب:

  • **على جانب الخادم:** الطريقة الأكثر شيوعًا هي تكوين الخادم لإضافة رؤوس CORS المناسبة إلى استجاباته. يعتمد التكوين المحدد على خادم الويب الذي تستخدمه (مثل Apache, Nginx, Node.js, Python/Flask, PHP).
  • **على جانب المتصفح:** لا يمكنك التحكم بشكل مباشر في CORS من جانب المتصفح. المتصفح هو الذي يفرض سياسة CORS. ومع ذلك، يمكنك تجنب مشاكل CORS عن طريق التأكد من أن الخادم الخاص بك يقوم بتكوين CORS بشكل صحيح.
  • **الوكيل (Proxy):** يمكن استخدام وكيل (proxy) لتجاوز CORS. يعمل الوكيل كجسر بين تطبيق الويب والخادم. يرسل تطبيق الويب الطلب إلى الوكيل، والذي بدوره يرسل الطلب إلى الخادم. نظرًا لأن الطلب يتم إرساله من نفس الأصل (أصل الوكيل)، فإن CORS لا ينطبق. وهذه الطريقة تستخدم في بعض الأحيان في تجارة الخيارات الثنائية للوصول إلى بيانات من مصادر مختلفة بسرعة.

== أمثلة على تكوين CORS

  • **Nginx:**

```nginx add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; add_header 'Access-Control-Allow-Credentials' 'true'; ```

  • **Node.js (Express):**

```javascript const express = require('express'); const cors = require('cors');

const app = express();

app.use(cors()); // Enable CORS for all origins

// Or, specify allowed origins: // app.use(cors({ // origin: 'https://example.com' // }));

app.get('/api/data', (req, res) => {

 res.json({ message: 'Data from the API' });

});

app.listen(3000, () => {

 console.log('Server listening on port 3000');

}); ```

  • **Python (Flask):**

```python from flask import Flask, jsonify from flask_cors import CORS

app = Flask(__name__) CORS(app) # Enable CORS for all origins

@app.route('/api/data') def get_data():

 return jsonify({'message': 'Data from the API'})

if __name__ == '__main__':

 app.run(debug=True)

```

== CORS والخيارات الثنائية والتحليل الفني

في سياق تداول الخيارات الثنائية، يمكن أن يكون CORS مهمًا للوصول إلى بيانات السوق في الوقت الفعلي من مصادر مختلفة. غالبًا ما يعتمد المتداولون على بيانات من واجهات برمجة تطبيقات (APIs) مختلفة للحصول على معلومات حول الأصول الأساسية، مثل الأسهم والعملات الأجنبية والسلع. إذا كانت واجهة برمجة التطبيقات هذه تستضيف على نطاق مختلف عن تطبيق تداول الخيارات الثنائية، فقد تحتاج إلى تكوين CORS بشكل صحيح للسماح للتطبيق بالوصول إلى البيانات.

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

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

== اعتبارات أمنية

على الرغم من أن CORS يمكن أن يكون مفيدًا، إلا أنه من المهم استخدامه بحذر لتجنب الثغرات الأمنية. فيما يلي بعض الاعتبارات الأمنية:

  • **تجنب استخدام `Access-Control-Allow-Origin: *`:** يسمح هذا لأي نطاق بالوصول إلى مواردك، مما قد يعرضك للهجمات.
  • **حدد نطاقات محددة في `Access-Control-Allow-Origin`:** السماح فقط للنطاقات التي تثق بها بالوصول إلى مواردك.
  • **تحقق من صحة رؤوس HTTP:** تأكد من أن رؤوس HTTP التي تسمح بها آمنة ولا يمكن استغلالها.
  • **استخدم `Access-Control-Allow-Credentials: true` بحذر:** يجب استخدام هذا فقط إذا كنت بحاجة إلى تضمين بيانات الاعتماد (مثل ملفات تعريف الارتباط) في الطلب.

== أدوات مفيدة لاختبار CORS

  • **Chrome DevTools:** يوفر Chrome DevTools أدوات قوية لفحص طلبات HTTP واستجاباتها، بما في ذلك رؤوس CORS.
  • **Postman:** Postman هو أداة شائعة لإرسال طلبات HTTP واختبار واجهات برمجة التطبيقات، ويمكن استخدامه أيضًا لاختبار CORS.
  • **CORS Tester:** هناك العديد من الأدوات عبر الإنترنت المتاحة لاختبار CORS، مثل [1](https://cors-tester.com/).

== الخلاصة

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

سياسة الأصل الواحد الاحتيال عبر المواقع تزوير الطلبات عبر المواقع واجهة برمجة التطبيقات التحليل الفني حجم التداول المؤشرات الفنية تحليل الاتجاهات استراتيجيات الخيارات الثنائية إدارة المخاطر التنويع التحليل الأساسي التحليل العاطفي الرافعة المالية إدارة رأس المال التحوط الانتشار الحد من الخسارة أوامر الإيقاف أوامر جني الأرباح التحليل الكمي اختبار الرجوع الخوارزميات التداول الآلي التحليل الإحصائي نماذج التنبؤ التعلم الآلي الشبكات العصبية تحسين المحفظة ```

ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين