تكنولوجيا

ما هي واجهة البوابة المشتركة (CGI)؟ – CloudSavvy IT

بيكسار / بريت سيلز

تعد واجهة البوابة العامة (CGI) معيارًا يحدد كيفية قيام البرامج الخارجية بتوفير المعلومات لخادم الويب. يوفر CGI آلية لخوادم الويب مثل Apache لتبادل البيانات مع لغات البرمجة مثل Perl.

يعد CGI أحد أقدم مكونات البنية التحتية للإنترنت. على الرغم من أنه تم استبداله ببدائل أحدث ، إلا أنه لا يزال يستخدم على نطاق واسع حتى اليوم.

تقليديا ، يقتصر برنامج خادم الويب على خدمة صفحات الويب الثابتة. يمكن إنشاء نص CGI متحرك الاستجابة ، التي تم إنشاؤها عند تلقي الطلب.

خادم HTTP قياسي

تهدف CGI إلى توفير طريقة موحدة للغات البرمجة للوصول إلى معلومات خادم HTTP. طالما أنها تتوافق جميعها مع مواصفات CGI ، يمكن إقران أي خادم HTTP بأي لغة برمجة.

سيستخدم الخادم الذي يدعم CGI عملية مشابهة لما يلي لمعالجة الطلب:

  1. تم استلام طلب جديد: /case in point.pl.
  2. يمكن لخادم الويب التعرف case in point.pl كبرنامج نصي CGI قابل للتنفيذ ، لذلك سوف يستدعي البرنامج النصي.
  3. يتلقى البرنامج النصي Perl CGI جميع البيانات المتعلقة بالطلب ، مثل عنوان URL ورؤوس HTTP الخاصة به.
  4. هذه example.pl يتم تشغيل البرنامج النصي ؛ سيتم تمرير مخرجاته مرة أخرى إلى خادم الويب كاستجابة HTTP للإرسال.

العملية الموضحة أعلاه في تناقض حاد مع التشغيل العادي لخادم الويب.متطلبات أساسية /case in point.pl سيتم إرجاع محتويات الملف.إذا لم يكن الملف موجودًا ، فستتلقى ملف 404 إجابة.

عند استخدام CGI ، لا يلزم تعيين الطلب إلى ملف حقيقي على القرص. بدلاً من ذلك ، يتم تشغيل برنامج محدد من قبل المستخدم. البرنامج مسؤول عن توليد المخرجات لإرسالها إلى العميل. لم يعد خادم الويب يهتم بالمحتوى الفعلي للاستجابة.

تبادل المعلومات عبر CGI

يمكن للملف الثنائي للبرنامج المنفذ من خلال CGI الوصول إلى بيانات مختلفة حول طلب HTTP الوارد. يتضمن ذلك عنوان URL والرأس وسلسلة الاستعلام وطريقة HTTP وعنوان IP للعميل البعيد.

لا يلزم وجود برنامج خادم لتوفير جميع البيانات. تسمح مواصفات CGI للخوادم باستبعاد الرؤوس من متغيرات البيئة.قد يكون هذا لتجاهل المعلومات الحساسة ، مثل Authorization رأس – أو تجنب التكرار عندما يمكن الوصول إلى نفس المعلومات باستخدام متغيرات مخصصة.

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

يتم تمرير المعلومات من الخادم إلى برنامج CGI كمتغيرات البيئة. يقوم البرنامج بالوصول إليها بنفس طريقة وصول أي متغيرات بيئة أخرى. يقوم الخادم بتشغيل البرنامج كعملية فرعية خاصة به ويقوم بتعيين متغيرات البيئة قبل استدعاء الملف القابل للتنفيذ.

هناك بيانات لن يتم تمريرها كمتغير بيئة. سيتم التعامل مع نص الطلب بشكل خاص لأنه يمكن أن يكون طويلاً جدًا. سيتم نقل هذا إلى البرنامج النصي من خلال تدفق الإدخال القياسي الخاص به.سيناريو يمر Content_Length متغيرات البيئة.

بعد معالجة البرنامج النصي ، يقوم البرنامج النصي CGI بإرجاع استجابة HTTP إلى الخادم. يجب أن يكون هذا استجابة HTTP كاملة مع رؤوس ونص اختياري. يرسل البرنامج النصي استجابة لدفق الإخراج القياسي الخاص به. بعد ذلك ، يرسل الخادم الاستجابة مرة أخرى إلى العميل عبر اتصال HTTP.

أين CGI اليوم؟

ساعدت CGI في تحقيق الشبكة الحديثة. يوفر طريقة بسيطة للغاية لإنشاء نصوص برمجية ديناميكية من جانب الخادم باستخدام تقنية منتصف التسعينيات. لم تعد صفحات الويب ملفات HTML ثابتة.

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

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

CGI محدودة أيضًا في التحكم الذي توفره للبرامج النصية.يمكن للبرنامج النصي تحديد فقط محتوى الاستجابة أرسل مرة أخرى إلى العميل. لا يمكن أن تؤثر على أي أجزاء أخرى من تبادل HTTP ، مثل المصادقة أو إدارة الجلسة.

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

حلت تقنية الواجهة الأحدث العديد من مشاكل CGI. تم إنشاء FastCGI لتقليل حمل CGI. إنه يعمل مثل CGI ، لكنه لا ينشئ عملية جديدة لكل طلب. على العكس من ذلك ، يعمل خادم FastCGI بشكل مستقل عن خادم الويب ويحافظ على مجموعة العمليات المستمرة الخاصة به لحمل البرامج النصية CGI.

في أماكن أخرى ، قامت لغات البرمجة المختلفة بتطبيق واجهات الخادم الخاصة بها. وعادة ما يتم دمجها مباشرة في خادم الويب من خلال وحدات اختيارية.مثال على ذلك هو اباتشي mod_php مع mod_perl، يمكنه توفير دعم أصلي للغات البرمجة تلك دون استخدام CGI (على الرغم من أنه يمكن استخدام كلتا اللغتين عبر CGI).

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

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى