في هذا الدرس 5تصفّح المواضيع
HTTP Response
استجابة HTTP
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 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 Status Line سطر حالة استجابة HTTP
تتكون بنية سطر الحالة من ثلاثة عناصر:
- إصدار البروتوكول المستخدم: مثل [HTTP/1.1].
- رقم الحالة: مثل [200 أو 404].
- وصف نصي قصير يوضح معنى رقم الحالة: على سبيل المثال، يشير الرقم 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 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 جسم استجابة HTTP
جسم استجابة HTTP response body هو جزء من الاستجابة response التي ترسلها الخوادم إلى العميل بعد معالجة طلب HTTP request، وهو يتضمن محتوى البيانات التي طلبها العميل مثل صفحات HTML، وملفات الصور، والفيديو، والنصوص، وملفات JSON.
بنية جسم استجابة HTTP Response Body Structure: تتكون من محتوى البيانات الفعلي. تقوم الخوادم بإرسال هذه البيانات على هيئة بايتات؛ قد تمثل نصًا بترميز محدد أو محتوى ثنائيًا كصورة كما هو موضح في مواصفات بروتوكول HTTP. فعلى سبيل المثال، عند زيارة صفحة ويب، يرسل المتصفح طلبًا إلى الخادم الذي يستجيب بإرسال معلومات الصفحة المطلوبة في جسم استجابة HTTP response body، مما يسمح للمتصفح بعرضها للمستخدم.
HTTP Response Body
إليك مثالًا على جسم استجابة HTTP response body لصفحة ويب.
<!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>
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.