Web Technology

HTTP Request
طلب HTTP

سنتعرف في هذا الدرس على طلب HTTP request، وعلي بنية رسالة طلب HTTP request message structure، وسطر الطلب HTTP request Line، ورؤوس HTTP headers، وجسم الطلب HTTP body، بالإضافة إلى حقول البادئة أو رأس رسالة HTTP لضمان إرسال البيانات واستلامها بشكل صحيح.

التاريخ

10 أبريل 2021

الدروس

51

المستوى

متقدم

اللغة

انجليزي

المشاهدات

2636

المواضيع

4
الشروحات chevron_left HTTP Request chevron_left Web Technology

HTTP Request
طلب HTTP

</> HTTP Request
طلب HTTP

طلب HTTP request هو رسالة تُرسل من العميل مثل متصفح الويب إلى الخادم بهدف الحصول على مورد معين [صفحة ويب مثلًا] أو تنفيذه. ويُعتبر طلب HTTP request أحد المكونات الأساسية في عملية التواصل على الإنترنت، وهو ما يُمكِّن المستخدمين من التفاعل مع المواقع والتطبيقات بسهولة وسلاسة.

وتتكون طلبات HTTP requests من عدة أجزاء رئيسية تشمل سطر طلب HTTP request line، ورؤوس HTTP headers، و جسم HTTP body، ولكل جزء منها دور مهم في تحديد وتوصيل المعلومات المطلوبة من الخادم.
HTTP Request Message Structure

محتوي رسالة طلب HTTP تكون بهذا النمط.

Request line | header | message body

</> HTTP Request Message Structure
بنية رسالة طلب HTTP

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

تتكون بنية رسالة طلب HTTP Request كتالي:

1. سطر طلب HTTP Request Line: يحدد نوع الطلب مثل GET أو POST، والمورد المطلوب URI، وإصدار بروتوكول HTTP المستخدم.

2. رؤوس HTTP Headers: توفر معلومات إضافية حول الطلب request أو الاستجابة response، مثل نوع المحتوى، والإعدادات الخاصة بالاتصال، والمعلمات الأمنية security parameters.

3. جسم HTTP Body: يحتوي على البيانات المُرسَلة مع الطلب، ويكون موجودًا فقط في بعض أنواع الطلبات requests مثل POST و PUT. في طلبات GET requests الجسم يكون فارغًا.

</> HTTP Request Line
سطر طلب HTTP

سطر طلب HTTP request line يحدد نوع الطلب مثل GET أو POST، والمورد المطلوب URI، وإصدار بروتوكول HTTP المستخدم.

مكونات سطر طلب HTTP Request Line:

1. الطريقة Method: طريقة HTTP المطلوب من الخادم تنفيذه أو القيام به مثل GET، POST، PUT، و DELETE مثلاً [DELETE حذف مورد معين من الخادم].

2. Uniform Resource Identifier URI: معرف الموارد الموحد لتحديد المورد المطلوب مثلاً، صفحة موقع كلوز تاج الرئيسية.

3. إصدار البروتوكول HTTP Version: إصدار HTTP المستخدم مثل HTTP/1.1.

HTTP Get Request Line

سطر طلب http من النوع get يكون بهذا الشكل.

GET /login?username=user&password=pass HTTP/1.1
HTTP Post Request Line

سطر طلب http من النوع post يكون بهذا الشكل.

POST /login HTTP/1.1

</> HTTP Request Headers
رؤوس طلب HTTP

رؤوس HTTP headers توفر معلومات إضافية حول الطلب request أو الاستجابة response، مثل نوع المحتوى، والإعدادات الخاصة بالاتصال، والمعلمات الأمنية security parameters. ويُكتب كل رأس في سطر منفصل متبوعًا بنقطتين ومسافه key: value ويكون الـ HTTP header بالشكل التالي:

  • Host: www.closetag.com: يحدد عنوان أو دومين الخادم المستهدف.
  • User-Agent: Mozilla/5.0: يحدد معلومات عن العميل [مثل المتصفح الموجود علي جهاز المستخدم وفي هذا المثال هو متصفح موزيلا فاير فوكس].
  • Accept-Language: en-US: يحدد اللغة المكتوب بها محتوى صفحة الويب.
  • Content-Type: application/x-www-form-urlencoded: يحدد نوع البيانات المرسلة في الجسم Body.
  • Content-Length: 27: يحدد طول البيانات المرسلة في الجسم Body بالبايتات.
HTTP Request Headers

بادئة أو رأس طلب http تكون بهذا الشكل.

Host: www.closetag.com
User-Agent: Mozilla/5.0
Accept-Language: en-US
Host
  • في request headers، يُستخدم Host لتحديد المضيف [الخادم] والعنوان المطلوب أو والدومين. هذا الجزء من الرأس يخبر الخادم بالضبط أي مورد يتم طلبه، خاصة عندما يكون لدى الخادم العديد من المواقع المستضافة على نفس عنوان ip address.

</> HTTP Request Body
جسم طلب HTTP

جسم HTTP Body يحتوي على البيانات المُرسَلة مع الطلب، ويكون موجودًا فقط في بعض أنواع الطلبات requests مثل POST و PUT. في طلبات GET الجسم يكون فارغًا.

في طلبات GET requests، يتم إرسال البيانات عادةً كجزء من عنوان URL بدلاً من جسم HTTP Body، وبالتالي يكون جسم HTTP Body فارغًا بالفعل. البيانات في طلبات GET requests تضاف إلى نهاية عنوان URL في شكل سلسلة استعلام [query string]. جسم الرسالة في طلبات GET requests لا يحتوي على بيانات، وكل المعلومات تُرسل في عنوان URL بهذا الشكل username=user&password=pass.


في طلبات POST requests، يتم إرسال البيانات عادةً كجزء من جسم HTTP Body بدلاً من عنوان URL. يتم نقل المعلومات المطلوبة أو البيانات التي يجب معالجتها إلى الخادم من خلال جسم HTTP Body. وهذا يسمح بإرسال كميات كبيرة من البيانات بشكل آمن، حيث لا تظهر هذه البيانات في عنوان URL.

HTTP Get Request Message

رسالة طلب http تكون كاملة بهذا الشكل في حال كان من النوع get.

GET /login?username=user&password=pass HTTP/1.1
Host: www.closetag.com
User-Agent: Mozilla/5.0
Accept-Language: en-US
HTTP Post Request Message

رسالة طلب http تكون كاملة بهذا الشكل في حال كان من النوع POST.

POST /login HTTP/1.1
Host: www.closetag.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=user&password=pass
ملاحظة
  • عندما يقوم المستخدم بإدخال اسم المستخدم وكلمة المرور في صفحة تسجيل الدخول على موقع ويب معين، ويضغط على زر "تسجيل الدخول"، يتم إرسال هذه البيانات إلى الخادم للتحقق منها. في هذه الحالة، يكون جسم الرسالة بالشكل التالي:[username = user & password = pass].
  • يكون جسم الرسالة request body غير فارغ في حالة كان الطلب من نوع POST وهذا هو مثال:
    [username = ahmed & password = 123456].
  • يكون جسم الرسالة request body فارغًا في حالة كان الطلب من نوع GET.

</> HTTP Header Fields
حقول البادئة أو رأس رسالة HTTP

  • User:Agent: Mozilla/5.0: يحدد معلومات عن المتصفح الذي يستخدمه العميل.
  • Host: www.closetag.com: يحدد عنوان أو دومين الخادم المستهدف.
  • Accept:Language: es, fr: يحدد اللغات المفضلة للمحتوى لدى العميل.
  • Date: Tue, 25 Jul 2023 10:30:00 GMT: يحدد تاريخ ووقت الطلب أو الاستجابة.
  • Server: Nginx: يحدد معلومات عن خادم الويب الذي يستجيب للطلب.
  • Last:Modified: Fri, 21 Jul 2023 15:00:00 GMT: يحدد آخر تاريخ تعديل للمحتوى المطلوب.
  • ETag: "a1b2c3d4:e:12345678": معرف فريد للإصدار الحالي من المورد.
  • Accept:Ranges: none: يحدد إذا كانت الخادم يقبل طلبات بتجزئة المحتوى.
  • Content:Length: 100: يحدد طول المحتوى بالبايتات.
  • Vary: User:Agent: يحدد أن الاستجابة قد تختلف بناءً على حقل User:Agent.
  • Content:Type: application/json: يحدد نوع المحتوى المُرسل.
  • Set-Cookie: sessionId=abc123; Path=/; HttpOnly: ينشئ ملف تعريف الارتباط لتعريف جلسة المستخدم ويحدد مساره.

HTTP Header Fields

هذه الحقول توضح تفاصيل الاتصال بين العميل والخادم، بما في ذلك نوع المتصفح، الخادم، وتفضيلات اللغة.

User-Agent: Mozilla/5.0
Host: www.closetag.com
Accept-Language: es, fr
Date: Tue, 25 Jul 2023 10:30:00 GMT
Server: Nginx
Last-Modified: Fri, 21 Jul 2023 15:00:00 GMT
ETag: "a1b2c3d4-e-12345678"
Accept-Ranges: none
Content-Length: 100
Vary: User-Agent
Content-Type: application/json
ملاحظات
  • هناك بعض الحقول المشتركة بين الطلب request والاستجابة response، وبعضها مخصص للطلب فقط، وبعضها مخصص للاستجابة فقط.

  • ملف تعريف الارتباط Cookie، هو ملف صغير يخزنه المتصفح على جهاز المستخدم بناءً على طلب من الخادم. يحتوي هذا الملف على معلومات معينة مثل معرفات الجلسات، وهي رموز فريدة تُستخدَم لتمييز وتتبع جلسات المستخدمين على الموقع أو تفضيلات المستخدم. يساعد هذا في تتبع وتخزين البيانات الخاصة بجلسات المستخدمين على الموقع، مما يسهل التعرف عليهم عند زيارتهم للموقع مرة أخرى دون الحاجة إلى إعادة إدخال بياناتهم.

  • جلسة المستخدم وهي فترة التفاعل المستمر بين المستخدم وموقع الويب، تبدأ الجلسة عند دخول المستخدم وتنتهي عند مغادرته أو إغلاق المتصفح، وخلالها يتم تتبع وتخزين بيانات تفضيلاته وإجراءاته على الموقع.
معلومات تهمك
  • لا تنس تقييم الدروس لكي نُحدّث المُحتوى باستمرار حتى ينال إعجابك.
  • لا تنس مشاركة الموقع مع أصدقائك حتى تعمّ الفائدة وتكون سببًا في نفعهم.
مشاركة
0
0
0
0
عدد المشاركات
هل هذه المعلومات نالت إعجابك ؟
0
0
عدد التقييمات