اذهب إلى المحتوى

لوحة المتصدرين

  1. Ola Abbas

    Ola Abbas

    الأعضاء


    • نقاط

      1

    • المساهمات

      189


  2. محمد هاني صباغ

    • نقاط

      1

    • المساهمات

      95


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 12/01/24 in مقالات DevOps

  1. سنجيب في هذه السلسلة من المقالات سلسلة تعلم تطوير الويب على بعض الأسئلة الأساسية حول برمجة موقع الويب من طرف الخادم، مثل ماهية البرمجة من طرف الخادم واختلافها عن البرمجة من طرف العميل وسبب فائدتها الكبيرة، كما سنقدم نظرةً عامةً على بعض أكثر أطر عمل الويب من طرف الخادم شيوعًا مع إرشادات حول كيفية اختيار إطار العمل الأنسب لإنشاء مشروعك الأول، وسنقدم مقدمةً تمهيديةً عالية المستوى حول أمان خادم الويب. المتطلبات الأساسية لا تحتاج إلى معرفة برمجة مواقع الويب من طرف الخادم أو أيّ نوع آخر من البرمجة قبل البدء، ولكن يجب أن تفهم شيئًا ما عن طريقة عمل مواقع الويب وخوادم الويب، لذلك نوصي بقراءة المقالات التالية: مدخل إلى خادم الويب. تثبيت البرمجيات الأساسية للانطلاق في تطوير الويب. رفع ملفات موقع الويب إلى خادم على الإنترنت. ستكون جاهزًا للعمل من خلال الفهم الأساسي الذي تكتسبه من هذه المقالات. تتألف هذه السلسلة الفرعية من المقالات التالية: مدخل إلى برمجة مواقع الويب من طرف الخادم: يتناول المقال الأول برمجة موقع الويب من طرف الخادم عالية المستوى، وتجيب على أسئلة، مثل ماهية البرمجة من طرف الخادم واختلافها عن البرمجة من طرف العميل وسبب فائدتها الكبيرة. ستفهم بعد قراءة هذا المقال القدرات الإضافية المتاحة لمواقع الويب من خلال كتابة الشيفرة البرمجية من طرف الخادم. نظرة عامة على تفاعلات الخادم مع العميل في موقع ويب ديناميكي: سنختبر ما يحدث عندما يتلقى الخادم طلبًا ديناميكيًا من متصفح بعد معرفة الغرض والفوائد المحتملة من البرمجة من طرف الخادم. بما أن معظم الشيفرة البرمجية من طرف الخادم لمواقع الويب تتعامل مع الطلبات والاستجابات بطريقة مماثلة، سيساعدك ذلك على فهم ما عليك فعله عند كتابة شيفرتك البرمجية. أطر عمل الويب من طرف الخادم: أوضح المقال السابق ما يجب على تطبيق الويب من طرف الخادم فعله للاستجابة لطلبات متصفح الويب، ويشرح هذا المقال كيف يمكن لأطر عمل الويب تبسيط هذه المهام، ويساعدك على اختيار إطار العمل المناسب لأول تطبيق ويب من طرف الخادم. تعرف على أمان مواقع الويب: يتطلب أمان الموقع الحذر في جميع جوانب بناء الموقع وتشغيله. يساعدك هذا المقال التمهيدي في فهم الخطوات الأولى المهمة الممكن اتخاذها لحماية تطبيق الويب من الهجمات الأكثر شيوعًا. ملاحظة: يتناول هذا المقال أطر العمل من طرف الخادم، وكيفية استخدامها لإنشاء مواقع الويب. إذا كنت تبحث عن معلومات حول أطر عمل جافا سكريبت JavaScript من طرف العميل، فاطلع على مقال فهم أدوات تطوير الويب من طرف العميل. لا تحتوي هذه السلسلة من المقالات على أي تقييم لأننا لم نعرض لك أي شيفرة برمجية بعد، إذ يجب أن يكون لديك في هذه المرحلة فهمٌ عام للوظائف التي يمكنك تقديمها من خلال البرمجة من طرف الخادم مع اتخاذ قرار بشأن إطار عمل الويب من طرف الخادم الذي ستستخدمه لإنشاء أول تطبيق من طرف الخادم. لنبدأ بمقالنا الأول من هذه السلسلة من خلال التعرُّف على مفهوم برمجة مواقع الويب من طرف الخادم. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن تمهيد إلى برمجة مواقع الويب من طرف الخادم server-side المتطلبات الأساسية: المهارات الحاسوبية الأساسية، وفهم أساسي لخادم الويب. الهدف: التعرف على مفهوم برمجة مواقع الويب من طرف الخادم، وما يمكن أن تفعله، وكيف تختلف عن البرمجة من طرف العميل. تستخدم معظمُ مواقع الويب واسعة النطاق الشيفرةَ البرمجية من طرف الخادم لعرض بيانات مختلفة ديناميكيًا عند الحاجة، وتُسحَب من قاعدة البيانات المخزنة على الخادم وتُرسَل إلى العميل لعرضها باستخدام شيفرة برمجية مثل شيفرة لغتي HTML وجافا سكريبت. من أهم فوائد الشيفرة البرمجية من طرف الخادم أنها تسمح لك بتخصيص محتوى موقع الويب لكل مستخدم، إذ يمكن للمواقع الديناميكية إبراز المحتوى الأكثر صلة بناءً على تفضيلات المستخدم وعاداته، ويمكن أن تسهّل الشيفرة البرمجية من طرف الخادم استخدامَ المواقع من خلال تخزين التفضيلات والمعلومات الشخصية، مثل إعادة استخدام تفاصيل بطاقة الائتمان المخزنة لتبسيط المدفوعات اللاحقة، كما يمكنها السماح بالتفاعل مع مستخدمي الموقع وإرسال الإشعارات والتحديثات عبر البريد الإلكتروني، أو عبر قنوات أخرى، مما يتيح مشاركةً أعمق بكثير مع المستخدمين. ملاحظة: يُوصَى بشدة بالتعرف على تطوير مواقع الويب من طرف الخادم في العالم الحديث لتطوير الويب. ما هي برمجة مواقع الويب من طرف الخادم؟ تتواصل متصفحات الويب مع خوادم الويب باستخدام بروتوكول نقل النص التشعبي HyperText Transfer Protocol -أو اختصارًا HTTP، إذ يُرسَل طلب HTTP من متصفحك إلى الخادم الهدف عند النقر على رابط على صفحة ويب، أو إرسال نموذج، أو إجراء بحث. يتضمن الطلب عنوان URL يحدد المورد المتأثر، وطريقةً تحدد الفعل المطلوب، مثل الحصول على المورد، أو حذفه، أو نشره، ويمكن أن يتضمن الطلب أيضًا معلومات إضافية مشفرة في معاملات URL (أزواج حقل-قيمة field-value المرسَلة عبر سلسلة الاستعلام query string)، مثل بيانات POST (البيانات المرسَلة باستخدام طريقة POST لبروتوكول HTTP) أو في ملفات تعريف الارتباط Cookies المرتبطة بها. تنتظر خوادم الويب رسائل طلب العميل وتعالجها عند وصولها وترد على متصفح الويب برسالة استجابة HTTP، إذ تحتوي الاستجابة على سطر حالة يشير إلى نجاح الطلب من عدمه مثل السطر "HTTP/1.1 200 OK"، الذي يشير إلى النجاح. يمكن أن يحتوي متن الاستجابة على الطلب الناجح للمورد المطلوب (مثل صفحة HTML جديدة أو صورة)، والذي يمكن عرضه بعد ذلك باستخدام متصفح الويب. المواقع الساكنة static sites يوضّح الشكل الآتي معمارية خادم الويب الأساسية لموقع ساكن Static Site يعيد المحتوى الثابت نفسه من الخادم كلما طلب موردًا معينًا؛ فإذا أراد المستخدم الانتقال إلى صفحة ما، فسيرسل المتصفح طلب HTTP من النوع "GET" يحدد عنوان URL الخاص به. يسترجع الخادمُ المستندَ المطلوب من نظام ملفاته ويعيد استجابة HTTP التي تحتوي على المستند وحالة النجاح (عادةً ‎200 OK). إذا تعذّر استرجاع الملف لسبب ما، ستُعاد حالة خطأ (اطلع على كيفية استكشاف وإصلاح رموز أخطاء HTTP الشائعة). المواقع الديناميكية dynamic sites موقع الويب الديناميكي هو الموقع الذي يُنشَأ فيه بعضٌ من محتوى الاستجابة ديناميكيًا عند الحاجة فقط، إذ تُنشَأ صفحات HTML من خلال إدخال بيانات من قاعدة بيانات إلى عناصر بديلة في قوالب HTML، وتُعَد هذه الطريقة أكثر فاعلية من استخدام مواقع الويب الساكنة لتخزين كميات كبيرة من المحتوى. يمكن للموقع الديناميكي إعادة بيانات مختلفة لعنوان URL بناءً على المعلومات التي يقدّمها المستخدم أو التفضيلات المخزنة ويمكنه إجراء عمليات أخرى بوصفها جزءًا من إعادة الاستجابة مثل إرسال الإشعارات. يجب تشغيل معظم الشيفرة البرمجية لدعم موقع ويب ديناميكي على الخادم، ويُعرَف إنشاء هذه الشيفرة البرمجية باسم "البرمجة من طرف الخادم" أو "كتابة سكريبتات الواجهة الخلفية" أحيانًا. يوضّح الشكل الآتي معمارية بسيطة لموقع ويب ديناميكي، إذ ترسل المتصفحات طلبات HTTP إلى الخادم الذي يعالجها ويعيد استجابات HTTP المناسبة. يجري التعامل مع طلبات الموارد الساكنة باستخدام طريقة التعامل مع المواقع الساكنة نفسها، فالموارد الساكنة هي ملفات لا تتغير مثل ملفات CSS وجافا سكريبت والصور وملفات PDF المُنشَأة مسبقًا وإلخ. تُمرّر طلبات الموارد الديناميكية (الخطوة رقم 2) إلى الشيفرة البرمجية من طرف الخادم (الموضحة في الشكل السابق بوصفها تطبيق ويب)، بينما يفسّر الخادم الطلب الديناميكي، ويقرأ المعلومات المطلوبة من قاعدة البيانات (الخطوة رقم 3)، ويجمع البيانات المسترجعة مع قوالب HTML (الخطوة رقم 4)‎، ويرسل استجابة تحتوي على ملف HTML المُنشَأ (الخطوتين 5 و 6). هل تتشابه البرمجة من طرف الخادم مع البرمجة من طرف العميل؟ لنوجّه انتباهنا الآن إلى الشيفرة البرمجية الموجودة في البرمجة من طرف الخادم وطرف العميل، فهما مختلفتان كثيرًا للأسباب التالية: لديهما أغراض واهتمامات مختلفة. لا تستخدمان لغات البرمجة نفسها باستثناء لغة جافا سكريبت التي يمكن استخدامها من طرف الخادم ومن طرف العميل. تعملان ضمن بيئات أنظمة تشغيل مختلفة. تُعرَف الشيفرة البرمجية التي تعمل في المتصفح باسم الشيفرة البرمجية من طرف العميل وتهتم بتحسين مظهر وسلوك صفحة الويب المعروضة، ويتضمن ذلك تحديد مكونات واجهة المستخدم وتنسيقها وإنشاء التخطيطات والتنقل والتحقق من صحة النموذج وما إلى ذلك؛ بينما تتضمن برمجة مواقع الويب من طرف الخادم اختيار المحتوى المُعاد إلى المتصفح استجابةً للطلبات، إذ تعالج الشيفرة البرمجية من طرف الخادم مهامًا، مثل التحقق من صحة البيانات والطلبات المُرسَلة واستخدام قواعد البيانات لتخزين البيانات واسترجاعها وإرسال البيانات الصحيحة إلى العميل كما هو مطلوب. تُكتَب الشيفرة البرمجية من طرف العميل باستخدام لغات HTML وCSS وجافا سكريبت، وتعمل ضمن متصفح ويب ولديها وصول ضئيل أو معدوم إلى نظام التشغيل الأساسي بما في ذلك الوصول المحدود إلى نظام الملفات. لا يستطيع مطورو الويب التحكم في المتصفح الذي يمكن أن يستخدمه كل مستخدم لعرض موقع الويب، إذ توفر المتصفحات مستويات غير متناسقة من التوافق مع ميزات الشيفرة البرمجية من طرف العميل، ويُعَد التعامل مع الاختلافات في دعم المتصفحات بسلاسة جزءًا من التحدي المتمثل في البرمجة من طرف العميل. يمكن كتابة الشيفرة البرمجية من طرف الخادم باستخدام لغات برمجة متعددة، إذ تشمل أمثلة لغات الويب الشائعة من طرف الخادم لغات PHP وبايثون Python وروبي Ruby وC#‎ وجافا سكريبت (NodeJS)، وتتمتع الشيفرة البرمجية من طرف الخادم بالوصول الكامل إلى نظام تشغيل الخادم ويمكن للمطور اختيار لغة البرمجة (والإصدار المحدد) التي يرغبون في استخدامها. يكتب المطورون شيفرتهم البرمجية باستخدام أطر عمل الويب التي هي مجموعات من الدوال والكائنات والقواعد وبنيات الشيفرات البرمجية الأخرى المُصمَّمة لحل المشاكل الشائعة وتسريع التطوير وتبسيط الأنواع المختلفة من المهام التي تواجه مجالًا معينًا. تستخدم الشيفرة البرمجية لكل من العميل والخادم أطر عمل، ولكن المجالات مختلفة جدًا، وبالتالي تكون أطر العمل مختلفة أيضًا، إذ تعمل أطر عمل الويب من طرف العميل على تبسيط مهام التخطيط والعرض، بينما توفر أطر عمل الويب من طرف الخادم الكثير من وظائف خادم الويب الشائعة التي يمكن أن تضطر إلى تقديمها بنفسك، مثل دعم الجلسات ودعم المستخدمين والاستيثاق Authentication والوصول السهل إلى قاعدة البيانات ومكتبات القوالب وما إلى ذلك. ملاحظة: تُستخدَم أطر العمل من طرف العميل للمساعدة لتسريع تطوير الشيفرة البرمجية من طرف العميل، لكن يمكنك اختيار كتابة شيفرتك البرمجية يدويًا، والتي من الممكن أن تكون أسرع وأكثر فاعلية إذا أردتَ واجهة مستخدم موقع ويب صغيرة وبسيطة؛ بينما لن تفكر أبدًا في كتابة مكوِّن من طرف الخادم لتطبيق ويب بدون إطار عمل، فمن الصعب تقديم ميزة أساسية مثل خادم HTTP من الصفر باستخدام لغة بايثون، ولكن توفر أطر عمل الويب باستخدام لغة بايثون مثل إطار عمل جانغو Django ميزات مهمة إلى جانب أدوات أخرى مفيدة. فوائد واستخدامات البرمجة من طرف الخادم تُعَد البرمجة من طرف الخادم مفيدةً جدًا لأنها تتيح تقديم معلومات مُصمَّمة خصيصًا لكل مستخدم بكفاءة وبالتالي إنشاء تجربة مستخدم أفضل بكثير. تستخدم شركات مثل أمازون Amazon البرمجة من طرف الخادم لإنشاء نتائج البحث عن المنتجات، وتقديم اقتراحات المنتجات المستهدفة بناءً على تفضيلات العميل وعادات الشراء السابقة وتبسيط عمليات الشراء وما إلى ذلك؛ بينما تستخدم البنوك البرمجة من طرف الخادم لتخزين معلومات الحسابات والسماح للمستخدمين المُصرَّح لهم فقط بمشاهدة المعاملات وإجرائها؛ وتستخدم خدمات أخرى، مثل فيسبوك Facebook وتويتر Twitter وإنستغرام Instagram وويكيبيديا Wikipedia البرمجة من طرف الخادم لإظهار المحتوى ومشاركته والتحكم في الوصول إليه. سنذكر الآن بعض الاستخدامات والفوائد الشائعة للبرمجة من طرف الخادم، إذ ستلاحظ بعض التداخل بينها. تخزين المعلومات وتسليمها بفعالية هناك الكثير من المنتجات المتوفرة على أمازون والمنشورات المكتوبة على فيسبوك، وبالتالي سيكون إنشاء صفحة ساكنة منفصلة لكل منتج أو منشور غير عملي. تسمح البرمجة من طرف الخادم بتخزين المعلومات في قاعدة بيانات وبناء ملفات HTML وأنواع أخرى من الملفات (مثل ملفات PDF والصور وغيرها) وإعادتها ديناميكيًا. يمكن إعادة بيانات (JSON و XML وغيرها) لعرضها باستخدام أطر عمل الويب المناسبة من طرف العميل، وهذا يقلل من عبء المعالجة على الخادم وكمية البيانات التي يجب إرسالها. لا يقتصر عمل الخادم على إرسال المعلومات من قواعد البيانات، إذ يمكن أن يعيد نتيجة الأدوات البرمجية أو البيانات من خدمات الاتصالات، ويمكن استهداف المحتوى حسب نوع جهاز العميل الذي يستقبله. توجد المعلومات في قاعدة بيانات، لذا يمكن مشاركتها وتحديثها بسهولة أكبر مع أنظمة الأعمال الأخرى، فمثلًا يمكن أن يحدّث المتجر قاعدة بيانات مُخزنة عند بيع المنتجات إما عبر الإنترنت أو ضمن متجر. يمكنك معرفة فائدة الشيفرة البرمجية من طرف الخادم لتخزين المعلومات الفعال وتسليمها من خلال المثال التالي: اذهب إلى موقع أمازون أو أي موقع تجارة إلكترونية آخر. ابحث عن عدد من الكلمات الرئيسية ولاحظ عدم تغيّر بنية الصفحة بالرغم من تغيّر النتائج. افتح منتجين أو ثلاثة منتجات مختلفة، ولاحظ كيف أن لديها بنيةً وتخطيطًا مشتركًا مع سحب محتوى المنتجات المختلفة من قاعدة البيانات. يمكنك أن ترى فعليًا ملايين القيم المُعادة بالنسبة لمصطلح بحث شائع مثل "السمك"، إذ يسمح استخدام قاعدة البيانات بتخزينها ومشاركتها بفاعلية، كما يسمح بالتحكم في عرض المعلومات في مكان واحد فقط. تجربة مستخدم مخصصة يمكن للخوادم تخزين واستخدام المعلومات المتعلقة بالعملاء لتوفير تجربة مستخدم ملائمة ومُخصَّصة، فمثلًا تخزّن العديد من المواقع بطاقات الائتمان دون إدخال التفاصيل مرةً أخرى. يمكن لمواقع مثل خرائط جوجل استخدام المواقع المحفوظة أو الحالية لتوفير معلومات التوجيه والبحث، أو سجل السفر لإظهار الأنشطة التجارية المحلية في نتائج البحث. يمكن استخدام تحليل أعمق لعادات المستخدم لتوقّع اهتماماتهم وتخصيص الاستجابات والإشعارات، مثل تقديم قائمة بالمواقع التي زارها سابقًا أو التي يمكن أن يرغب في إلقاء نظرة عليها على الخريطة. تحفظ خرائط جوجل سجل البحث والزيارة، وتميّز المواقع التي تتكرر زيارتها، أو التي يتكرر البحث عنها أكثر من المواقع الأخرى. تُحسَّن نتائج بحث جوجل بناءً على عمليات البحث السابقة كما في المثال التالي: اذهب إلى بحث جوجل. ابحث عن "كرة القدم". حاول الآن كتابة كلمة "كرة" في مربع البحث ولاحظ توقعات البحث التي جرى إكمالها تلقائيًا. هل تعتقد أن هذه صدفة؟ حسنًا، إنها ليست كذلك. الوصول المتحكم فيه إلى المحتوى تسمح البرمجة من طرف الخادم للمواقع بتقييد الوصول إلى المستخدمين المُصرَّح لهم وتقديم المعلومات التي يُسمَح للمستخدم برؤيتها فقط. تشمل الأمثلة الواقعية مواقع الشبكات الاجتماعية التي تسمح للمستخدمين بتحديد مَن يمكنه رؤية المحتوى الذي ينشرونه على الموقع ويظهر على صفحتهم الرئيسية. ملاحظة: هناك أمثلة حقيقية أخرى، إذ يمكن التحكم في الوصول إلى المحتوى، مثل ما يمكنك رؤيته إذا ذهبت إلى موقع الإنترنت الخاص بالمصرف الذي تتعامل معه. سجّل الدخول إلى حسابك ولاحظ ما هي المعلومات الإضافية التي يمكنك رؤيتها وتعديلها، وما هي المعلومات التي يمكنك رؤيتها والتي يمكن للمصرف تغييرها فقط. تخزين معلومات الجلسة أو الحالة تسمح البرمجة من طرف الخادم للمطورين بالاستفادة من الجلسات sessions، والتي هي آلية تسمح للخادم بتخزين معلومات عن المستخدم الحالي للموقع وإرسال استجابات مختلفة بناءً على تلك المعلومات. يسمح ذلك لموقع ما مثلًا بمعرفة أن مستخدمًا قد سجل الدخول مسبقًا وعرض روابطًا إلى رسائل بريده الإلكتروني، أو رتب السجل، أو حفظ حالة لعبة بسيطة بحيث يمكن للمستخدم الانتقال إلى الموقع مرةً أخرى والمتابعة من حيث تركه. ملاحظة: زُر موقع صحيفة يحتوي على نموذج اشتراك وافتح مجموعة من النوافذ مثل موقع The Age. استمر في زيارة الموقع على مدار بضع ساعات أو أيام، ثم سيُعاد توجيهك إلى صفحات تشرح كيفية الاشتراك، ولن تتمكن من الوصول إلى المقالات. تمثل هذه المعلومات مثالًا عن معلومات الجلسة المخزنة في ملفات تعريف الارتباط. الإشعارات والاتصالات يمكن للخوادم إرسال إشعارات عامة أو خاصة بالمستخدم من خلال موقع الويب نفسه، أو عبر البريد الإلكتروني، أو الرسائل القصيرة، أو الرسائل الفورية، أو محادثات الفيديو، أو خدمات الاتصالات الأخرى، ومن الأمثلة على ذلك ما يلي: يرسل فيسبوك وتويتر رسائل بريد إلكتروني ورسائل قصيرة لإعلامك بالاتصالات الجديدة. يرسل أمازون بانتظام رسائل بريد إلكتروني خاصة بالمنتجات بحيث ثقترح منتجات مشابهة لتلك التي اشتريتها أو شاهدتها مسبقًا والتي يمكن أن تكون مهتمًا بها. يمكن أن يرسل خادم الويب رسائل تحذير إلى مسؤولي الموقع لتنبيههم بانخفاض الذاكرة على الخادم أو نشاط مستخدم مريب. ملاحظة: أكثر أنواع الإشعارات شيوعًا هو "تأكيد التسجيل". اختر أيّ موقع كبير تهتم به مثل جوجل وأمازون وإنستغرام وأنشئ حسابًا جديدًا باستخدام عنوان بريدك الإلكتروني، وستتلقى بعدها بريدًا إلكترونيًا يؤكد تسجيلك أو يطلب تأكيدًا لتفعيل حسابك. تحليل البيانات يمكن أن يجمع موقع الويب الكثير من البيانات حول المستخدمين مثل ما الذي يبحثون عنه وماذا يشترون وما يوصون به ومدة بقائهم في كل صفحة. يمكن استخدام البرمجة من طرف الخادم لتحسين الاستجابات بناءً على تحليل هذه البيانات، فمثلًا تعلن كلًا من أمازون وجوجل عن منتجات بناءً على عمليات البحث السابقة وعمليات الشراء. ملاحظة: إذا كنت من مستخدمي فيسبوك، فانتقل إلى الصفحة الرئيسية وانظر إلى المنشورات. لاحظ كيف أن بعض المنشورات ليست مرتبةً عدديًا، إذ تكون في أغلب الأحيان المشاركات التي تحتوي على عدد أكبر من الإعجابات أعلى في القائمة من المشاركات الأحدث. ألقِ نظرةً على نوع الإعلانات المعروضة، إذ يمكن أن تشاهد إعلانات عن الأشياء التي اطّلعتَ عليها على مواقع أخرى. يمكن أن تكون خوارزمية فيسبوك لإظهار المحتوى والإعلانات غامضةً بعض الشيء، ولكنها تعتمد على إعجاباتك وعادات المشاهدة. الخلاصة تعلمت الآن أن الشيفرة البرمجية من طرف الخادم تعمل على خادم ويب وأن دورها الرئيسي هو التحكم في المعلومات المُرسَلة إلى المستخدم، بينما تتعامل الشيفرة البرمجية من طرف العميل مع بنية تلك البيانات وعرضها للمستخدم، كما يجب أن تفهم أن الشيفرة البرمجية من طرف الخادم مفيدةٌ، لأنها تتيح إنشاء مواقع الويب التي تقدم معلومات مُخصَّصة لكل مستخدم بكفاءة ولديها فكرةٌ جيدةٌ عن بعض الأشياء التي يمكن أن تكون قادرًا على تطبيقها عندما تكون مبرمجًا من طرف الخادم. أخيرًا، يجب أن تفهم أنه يمكن كتابة الشيفرة البرمجية من طرف الخادم باستخدام عدد من لغات البرمجة وأنه يجب عليك استخدام إطار عمل ويب لتسهيل تلك العملية. سنساعدك في المقال التالي على اختيار أفضل إطار عمل ويب لموقعك الأول، وسنأخذك في جولة حول التفاعلات الرئيسية بين العميل والخادم بمزيدٍ من التفاصيل. ترجمة -وبتصرُّف- للمقالين Server-side website programming first steps و Introduction to the server side. اقرأ أيضًا المقال السابق: إعداد البيئة للاختبارات الآلية في مشاريع الويب للتوافق مع المتصفحات المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع أساسيات إنشاء موقع ويب باستخدام تعليمات HTML رفع ملفات موقع الويب إلى خادم على الإنترنت
    1 نقطة
  2. عند الاتصال بخادوم ويب أو تطبيق، يتم الردّ على كلّ طلب HTTP يتمّ استقباله من طرف الخادوم برمز حالة HTTP أو “HTTP status codes”. رموز حالة HTTP هي عبارة عن رموز مكوّنة من 3 أرقام يتم تصنيفها إلى 5 أصناف مختلفة. يمكن أن يتمّ التعرّف على صنف رمز الحالة بسرعة عبر الرقم الأوّل منه: 1xx: معلومة 2xx: نجاح 3xx: إعادة توجيه 4xx: خطأ من طرف جهاز العميل 5xx: خطأ من طرف الخادوميركّز هذا الدرس على استكشاف أبرز رموز أخطاء HTTP التي قد تصادفك مثل 4xx و5xx وإصلاحها. من منظور مدير النظام، هناك العديد من الحالات التي قد تجعل خادوم الويب يجيب طلبًا معيّنًا برمز خطأ معيّن، سنقوم بتغطية أكثر الأسباب الشائعة التي تؤدي إلى ذلك بالإضافة إلى حلولها. لمحة عامة عن أخطاء العميل والخادومأخطاء العميل، أو رموز حالة HTTP من 400 إلى 499، هي نتيجة لطلبات HTTP تمّ إرسالها بواسطة جهاز مستخدم (مثل متصفح ويب أو أيّ عميل HTTP آخر), صحيح أنّ هذا النوع من الأخطاء مرتبط بالعميل، إلّا أنّه سيكون من المفيد معرفة رمز الخطأ الذي يصادف المستخدم للتحقق مما إذا كان يمكن إصلاح المشكلة من إعدادات الخادوم. يتم إرجاع أخطاء الخادوم أو بالأحرى رموز حالة HTTP من 500 إلى 599 بواسطة خادوم الويب عندما يكتشف حصول مشكلة، وإلّا فإنّه لن يكون قادرًا على معالجة الطلب. نصائح عامة عن اكتشاف الأخطاء وإصلاحهاعند استخدام متصفّح ويب لاختبار خادوم ويب، قم بتحديث المتصفّح بعد تطبيق التغييرات على الخادوم.تحقق من سجلات الخادوم للمزيد من التفاصيل عن كيفية قيام الخادوم بمعالجة الطلبات. كمثال، تُنتِج خواديم الويب مثل Apache وNginx ملفّين اثنين يدعيان access.log وerror.log يمكن أن يتم فحصهما للحصول على المعلومات منهما.تذكّر أنّ تعريفات رموز حالة HTTP هي جزء من معيار مُضمَّن من قبل التطبيق الذي يخدم الطلبات. هذا يعني أنّ رمز الحالة الذي يتم إرجاعه إليك يعتمد على كيفية معالجة برنامج الخادوم لخطأ معيّن. سيفيدك هذا الدرس عمومًا لتوجيهك في المسار الصحيح بخصوص ذلك.الآن وبعد أن امتلكت فهمًا جيدًا لرموز حالة HTTP، سنلقي نظرةً على الأخطاء الشائعة التي قد تصافدك. 400 Bad Requestرمز الحالة 400، أو خطأ Bad Request، يعني أنّ طلب الـHTTP الذي تمّ إرساله إلى الخادوم كان يحوي دوالًا ومُعامِلات غير صحيحة. إليك بعض الأمثلة التي قد يطرأ فيها خطأ Bad Request والذي رقمه 400: كعكة المستخدم (Cookie) المرتبطة بالموقع تالفة، مسح خبيئة المتصفّح والكعكات قد يحلّ هذه المشكلة. طلب تالف بسبب متصفّح ويب سيء وقديم مثلًا. طلب تالف بسبب خطأٍ بشري مثل عند تشكيل طلبات HTTP بشكلٍ يدوي (مثل استعمال curl بطريقة غير صحيحة).401 Unauthorizedرمز الحالة 401، أو خطأ Unauthorized أو عدم التصريح يعني أنّ المستخدم يحاول الوصول إلى صفحة أو مادّة غير مخوّل له بالوصول إليها أو لم يتم السماح له بذلك بشكلٍ صحيح. يعني هذا أنّه يجب على المستخدم توفير بيانات الدخول ليتمكّن من رؤية البيانات والموارد المحمية. كمثال، إذا حاول مستخدم الوصول إلى صفحة محمية باستيثاق HTTP، كما في درسنا كيفية إعداد استيثاق http مع nginx على 14.04 ubuntu، ففي هذه الحالة، سيتلقّى المستخدم رمز الحالة "401" إلى أن يقوم بتوفير اسم مستخدم وكلمة مرور (تلك الموجودة في ملفّ htpasswd.) لخادوم الويب. 403 Forbiddenرمز الحالة 403، أو خطأ Forbidden أو "محظور"، يعني أنّ المستخدم قام بطلبٍ خاطئ إلّا أنّ الخادوم يرفض تنفيذه على كلّ حال بسبب عدم توفّر الصلاحيات الكافية للوصول إلى الصفحة المطلوبة. إذا كنت تواجه خطأ 403 بشكلٍ غير متوقّع، فهناك بضع أسباب يمكن أن نشرحها هنا. صلاحيات الملفاتتطرأ أخطاء 403 عادةً عندما يكون المستخدم الذي يشغّل عملية خادوم الويب لا يمتلك الصلاحيات الكافية لقراءة الملفّ الذي تمّ طلبه. لإعطاء مثال عن الكشف عن هذا الخطأ وإصلاحه، افترض حصول الوضع التالي: يحاول المستخدم الوصول إلى ملفّ الفهرس الخاصّ بالخادوم من http://example.com/index.htmlعملية تشغيل خادوم الويب مملوكة للمستخدم www-dataيوجد ملفّ الفهرس على الخادوم بالمسار usr/share/nginx/html/index.html/إذا كان المستخدم يحصل على خطأ 403، فتأكّد أنّ المستخدم www-data يمتلك الصلاحيات الكافية لقراءة ذلك الملفّ. يعني هذا عادةً أنّه يجب ضبط صلاحيات "الآخرين" أو الـ"Others" إلى السماح بالقراءة ليتم حلّ المشكلة، هناك عدّة طرق لتنفيذ هذا، ولكنّ هذا الأمر سيعمل في هذه الحالة: sudo chmod o=r /usr/share/nginx/html/index.html htaccess.سببٌ آخر قد يكون وراء خطأ 403 وغالبًا ما يحصل عن غير قصد، هو الاستخدام الخاطئ لملفّ htaccess.، يمكن أن يتمّ استخدام ملفّ htaccess. لمنع الوصول إلى صفحاتٍ أو موارد معيّنة من قبل عناوين IP محددة أو نطاقات، استخدام هذا الملفّ بشكلٍ غير صحيح قد يكون المشكلة مثلًا. إذا كان المستخدم يحصل على خطأ 403 بشكلٍ غير متوقع، فتأكّد من أنّ ملفّ الـhtaccess. الخاصّ بك ليس المسؤول عن ذلك. ملف الفهرس غير موجودإذا كان المستخدم يحاول الوصول إلى مجلّد لا يمتلك بداخله ملفّ فهرس افتراضيًا، ولم يكن خيار السماح بسرد محتويات المجلّدات مفعّلًا، فإنّ خادوم الويب سيُرجع خطأ حظر 403. كمثال، إذا كان المستخدم يحاول الوصول إلى http://example.com/emptydir ولم يكن هناك ملفّ فهرس في المجلّد emptydir على الخادوم، فإنّه سيتم إرجاع رمز حالة 403. إذا كنت تريد تفعيل خيار سرد محتويات المجلّدات في حال عدم وجود ملفّ فهرس بداخلها، فيمكنك القيام بذلك من إعدادات خادوم الويب الخاصّ بك. 404 Not Foundرمز الحالة 404، أو خطأ Not Found، يعني أنّ المستخدم كان قادرًا على التواصل مع الخادوم إلّا أنّه لم يتمكن من إيجاد الملفّ المطلوب أو الصفحة المنشودة. يمكن أن تطرأ أخطاء 404 في الكثير من الحالات. إذا كان المستخدم يتلقّى خطأ 404 بشكلٍ غير متوقّع، فإليك بعض الأسئلة التي يجب أن تسألها للمساعدة في تفحّص المشكلة وإصلاحها: هل الرابط الذي وجّهَ المستخدم إلى خادمك يحتوي على خطأ بالكتابة؟ هل قام المستخدم بكتابة العنوان الخاطئ؟ هل الملفّ موجود في المسار الحالي للخادوم؟ وهل تمّ نقله أو نقل الصفحة المطلوبة إلى مكانٍ آخر أو حذفها من الخادوم؟ هل تمّ ضبط إعدادات الخادوم إلى مسار الجذر الرئيسي المطلوب؟ هل المستخدم الذي يملك العملية المُشغّلة لخادوم الويب يمتلك الصلاحيات اللازمة للوصول إلى المسار الذي يحوي الملفّ بداخله؟ (تلميح: تتطلب المجلّدات صلاحيات القراءة والتنفيذ لتستطيع الوصول إليها). هل يتمّ الوصول إلى الملفّ أو الصفحة عبر وصلة رمزية (symbolic link)؟ إذا كان الأمر كذلك، فتحقق من أن خادوم الويب مضبوط ليتبع الوصلات الرمزية.500 Internal Server Errorرمز الحالة 500، أو 500 Internal Server Error يعني أنّ الخادوم غير قادر على معالجة الطلب لسببٍ مجهول. أحيانًا سيظهر هذا الرمز عندما تكون أخطاء 5xx أكثر عرضةً لتكون هي سبب المشكلة. عادةً ما يكون أبرز سببٍ مسبب لهذا الخطأ هو وجود مشكلة في إعدادات الخادوم (مثل ملفّ htaccess. تالف) أو حزم ناقصة (مثل محاولة تنفيذ سكربت PHP دون وجود حزمة PHP مثبّتة بشكلٍ صحيح على الخادوم). 502 Bad Gatewayرمز الحالة 502، أو 502 Bad Gateway، يعني أنّ الخادوم هو عبارة عن خادوم بوّابة أو وسيط (proxy)، وأنّه لا يتلقّى ردًا صحيحًا من خواديم الواجهة الخلفية (backend servers) التي يجب أن تقوم بمعالجة الطلب. إذا كان الخادوم المطلوب هو عبارة عن خادوم وسيط عكسي (reverse proxy server)، مثل موازِن للحِمل، فإليك بعض الأمور التي يمكنك التحقق منها: أنّ خواديم الواجهة الخلفية (حيث يتم توجيه طلبات HTTP) تعمل بشكلٍ صحيح. أنّ الخادوم العكسي مضبوط بشكلٍ صحيح، مع تحديد الخواديم الصحيحة للواجهة الخلفية. أنّ اتصال الشبكة بين خواديم الواجهة الخلفية وبين خادوم الوسيط العكسي يعمل بشكلٍ جيّد. إذا كان بإمكان الخواديم أن تتواصل عن طريق منافذ أخرى، فتأكّد أنّ الجدار الناري يسمح بمرور التدفّق (Traffic) بينها. إذا كان تطبيق الويب الخاصّ بك مضبوطًا للاستماع إلى socket، فتأكّد أنّ الـsocket موجودة في المسار الحالي وأنّها تمتلك الصلاحيات الكافية.503 Service Unavailableرمز الحالة 503، أو خطأ Service Unavailable، يعني أنّ الخادوم قد تحمّل فوق طاقته أو أنّه تحت الصيانة، يوحي هذا الخطأ أنّ الخدمة يجب أن تعود إلى العمل في وقتٍ ما من الزمن. إذا لم يكن الخادوم تحت الصيانة، يمكن لهذا أن يشير إلى أنّ الخادوم لا يملك الموارد الكافية من المعالج والذاكرة العشوائية لمعالجة جميع الطلبات الواردة، أو أنّ خادوم الويب يحتاج إلى أنّ يتم إعداده ليسمح بالمزيد من المستخدمين والعمليات. 504 Gateway Timeoutرمز الحالة 504، أو خطأ Gateway Timeout، يعني أنّ الخادوم هو عبارة عن خادوم بوّابة أو خادوم وسيط (proxy)، وأنّه لا يتلقّى ردًا من خواديم الواجهة الخلفية في فترة الوقت المسموح بها. يمكن لهذا الخطأ عادةً أن يحصل في الحالات التالية: اتصال الشبكة بين الخواديم ضعيف. خواديم الواجهة الخلفية التي تقوم بتنفيذ الطلب بطيئة جدًا، بسبب الأداء الضعيف. فترة المهلة لخادوم البوابة أو الوسيط قصيرة جدًا.الخاتمةيجب أن تكون قد صرتَ الآن مُدركًا لأبرز رموز أخطاء HTTP وأبرز الحلول المتوفّرة لهذه الأخطاء، يجب أن تمتلك أساسياتٍ جيّدة لاكتشاف الأخطاء وإصلاحها على خواديم الويب الخاصّة بك أو تطبيقاتك. ترجمة -وبتصرف- للمقال How To Troubleshoot Common HTTP Error Codes لصاحبه Mitchell Anicas.
    1 نقطة
×
×
  • أضف...