انتقل إلى محتوى الدرس
الدرس 44
دورة تكنولوجيا الويب

استجابة HTTPHTTP Response

سنتعرف في هذا الدرس على استجابة HTTP response، وسنتكلم عن بنية رسالة استجابة HTTP response message structure، وسطر الحالة HTTP response status line، ورؤوس استجابة HTTP response headers ، وجسم استجابة HTTP response body، لفهم كيفية تبادل البيانات وتفسيرها بين العميل والخادم.
أقسام الدرس
5
الأمثلة
7
اللغة
العربية
تاريخ النشر
المشاهدات
1,156
محتوى الدرس
في هذا الدرس 5تصفّح المواضيع

HTTP Response استجابة HTTP

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

تتكون بِنْيَة رسالة استجابة HTTP response من ثلاثة أجزاء رئيسية وهي سطر الحالة HTTP status line، وحقول البادئة أو الرؤوس HTTP headers، وجسم الرسالة HTTP message body. وسنتكلم عنها بالتفصيل لاحقاً.

البنية النصية التالية تخص HTTP/1.1؛ في HTTP/2 وHTTP/3 تنقل المعاني نفسها عبر إطارات ثنائية. لا تحمل كل استجابة جسمًا؛ من الأمثلة استجابات HEAD و1xx و204 و304.

HTTP Response

نموذج من شكل رسالة الاستجابة HTTP response التي يرد بها الخادم على وكيل العميل وهو المُتصفح، كما يلي:

نص
HTTP/1.1 200 OK
Date: Wed, 23 Aug 2023 18:25:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 155

<!DOCTYPE html>
<html>
<head>
    <title>HTTP Response</title>
</head>
<body>
    <h1>HTTP Response!</h1>
    <p>HTTP Response Message.</p>
</body>
</html>

HTTP Response Message Structure بنية رسالة استجابة HTTP

توضح بنية رسالة استجابة HTTP response كيفية هيكلة الرسائل التي يرسلها الخادم إلى العميل، وتتألف من سطر الحالة status line، والرؤوس headers، والجسم body.

بنية رسالة استجابة HTTP Response:

1. سطر الحالة Status Line: يتضمن سطر الحالة في استجابة HTTP response إصدار بروتوكول HTTP، وكود الحالة الذي يوضح نتيجة الطلب [مثل 200 للدلالة على نجاح الطلب أو 404 للدلالة على عدم العثور علي الصفحة المطلوبة]، وعبارة السبب التي تشرح الحالة بإيجاز.


2. الرؤوس Headers: توفر معلومات إضافية عن الاستجابة أو الخادم، في HTTP/1.1 يتبع اسم الحقل نقطتان ثم القيمة، مع مسافة اختيارية key: value.

3. الجسم Body: يحتوي على البيانات المُرسَلة من الخادم إلى العميل، مثل ملفات HTM أو JSON، أو ملفات أخرى. في حالة كود الحالة 204 لا يوجد محتوى، يكون الجسم فارغًا.

HTTP Get Request Message

هذا طلب تعليمي لمسار /index.html؛ لا يفترض أن الصفحة الرئيسية للموقع الحالي موجودة بهذا المسار:

نص
GET /index.html HTTP/1.1
Host: www.closetag.com
User-Agent: Mozilla/5.0
Accept-Language: en-US

HTTP Response Status Line سطر حالة استجابة HTTP

سطر حالة استجابة HTTP response هو مكون أساسي في بروتوكول HTTP يستخدم لتعريف حالة الطلب الذي تم إرساله من المستعرض [العميل] إلى الخادم [المُستضيف]، يُرسل الخادم هذا السطر كجزء من استجابته إلى العميل ليوضح ما إذا كان الطلب قد تم بنجاح، أو أنه واجه خطأ، أو يلزمه إجراء معين.

تتكون بنية سطر الحالة من ثلاثة عناصر:


  1. إصدار البروتوكول المستخدم: مثل [HTTP/1.1].

  2. رقم الحالة: مثل [200 أو 404].

  3. وصف نصي قصير يوضح معنى رقم الحالة: على سبيل المثال، يشير الرقم 200 إلى ok أن الطلب تم بنجاح، بينما يشير الرقم 404 إلى أن الصفحة المطلوبة غير موجودة في الخادم.

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

في HTTP/1.1 يمكن أن تكون عبارة السبب فارغة؛ يعتمد العميل على رقم الحالة. لا يوجد سطر حالة نصي بهذه الصيغة في HTTP/2 أو HTTP/3.

HTTP Response Status Line

إليك مثالًا على سطر حالة استجابة HTTP response.

نص
HTTP/1.1 200 OK

HTTP Response Headers رؤوس استجابة HTTP

رؤوس استجابة HTTP response تعتبر جزءًا مهمًا من بروتوكول HTTP الذي يُستخدم لنقل البيانات بين الخوادم ومتصفحات الويب حيث تحمل هذه الرؤوس headers معلومات مفصلة حول الاستجابةresponse التي يرسلها الخادم بعد تلقيه طلبًا من المتصفح مما يساعد في تحديد كيفية التعامل مع المحتوى والبيانات القادمة.

تشمل هذه الرؤوس headers عدة أنواع من المعلومات مثل نوع المحتوى، حجمه، تاريخه، وتوجيهات التخزين المؤقت. ويمكن لمطوري الويب والمسؤولين  عن المواقع الإلكترونية استخدام هذه الرؤوس headers لضبط سلوك المتصفحات، وتحسين الأداء العام للموقع، وزيادة مستوى الأمان. وتعد رؤوس الاستجابة مثل نوع المحتوى Content-Type، والتخزين المؤقت Cache-Control، وتعيين ملف تعريف الارتباط Set-Cookie عناصر حيوية في تحسين تجربة المستخدم وتقديم محتوى ديناميكي، لكن هذه الرؤوس لا تُحدّث محتوى الصفحة تلقائيًا أو في الوقت الفعلي؛ يحتاج التخصيص والتفاعل إلى منطق في التطبيق، مما يوفر تجربة أكثر جذباً وملائمة للمستخدم.


Cache-Control: no-cache يسمح بتخزين الاستجابة، لكنه يشترط التحقق منها قبل إعادة استخدامها لتلبية طلب لاحق؛ يختلف عن no-store.

HTTP Response Headers Syntax

تأتي رؤوس استجابة HTTP response headers على هيئة مفتاح وقيمة key: value، حيث يحدد المفتاح نوع المعلومات المرسلة بينما تعطي القيمة تفاصيل تلك المعلومات.

نص
Key:Value

HTTP Response Headers

إليك مثالًا على مجموعة من رؤوس استجابة HTTP response headers .

نص
Date: Wed, 23 Aug 2023 18:25:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 128
Connection: keep-alive
Cache-Control: no-cache

HTTP Response Body جسم استجابة HTTP

جسم استجابة HTTP response body هو جزء من الاستجابة response التي ترسلها الخوادم إلى العميل بعد معالجة طلب HTTP request، وهو يتضمن محتوى البيانات التي طلبها العميل مثل صفحات HTML، وملفات الصور، والفيديو، والنصوص، وملفات JSON.


بنية جسم استجابة HTTP Response Body Structure: تتكون من محتوى البيانات الفعلي. تقوم الخوادم بإرسال هذه البيانات على هيئة بايتات؛ قد تمثل نصًا بترميز محدد أو محتوى ثنائيًا كصورة كما هو موضح في مواصفات بروتوكول HTTP. فعلى سبيل المثال، عند زيارة صفحة ويب، يرسل المتصفح طلبًا إلى الخادم الذي يستجيب بإرسال معلومات الصفحة المطلوبة في جسم استجابة HTTP response body، مما يسمح للمتصفح بعرضها للمستخدم. 

HTTP Response Body

إليك مثالًا على جسم استجابة HTTP response body لصفحة ويب.

HTML
<!DOCTYPE html>
<html>
<head>
<title> CloseTag | HTTP Response </title>
</head>
<body>
<h1>CloseTag | HTTP Response</h1>
...
</body>
</html>

HTTP Response Message

إليك رسالة استجابة HTTP response message كاملة تحتوي على كافة الأجزاء:

حُسب Content-Length من بايتات جسم المثال بترميز UTF-8 مع LF بين أسطر الجسم ودون سطر نهائي إضافي. تُرسل رؤوس HTTP/1.1 مع CRLF وسطر فارغ قبل الجسم. إذا غيّرت بايتات الجسم، فأعد حساب الطول. النقاط الثلاث محتوى حرفي توضيحي هنا، وsessionId قيمة تعليمية وليست جلسة فعلية.

نص
HTTP/1.1 200 OK
Date: Wed, 23 Aug 2023 18:25:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 128
Connection: keep-alive
Cache-Control: no-cache
Set-Cookie: sessionId=abc123; Path=/; HttpOnly

<!DOCTYPE html>
<html>
<head>
<title> CloseTag | HTTP Response</title>
</head>
<body>
<h1>HTTP Response</h1>
...
</body>
</html>

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…