في البداية اسم بروتوكول في عالم الاتصالات , يطلق على مجموعة القواعد التي من الضروري الالتزام بها من قبل طرفين لإتمام اتصال صالح.
Http هو اختصار لـ hypertext transfer protocol او بروتوكول نقل النص التشعبي , أو بمعنى اكثر وضوحا : هي مجموعة القواعد اللازمة لصنع قناة تواصل بين وجهة المستخدم
(المتصفح ) و سيرفر http لعرض محتوى تشعبي (صفحة html ).
في منتصف الثمانينات كان البروتوكول المستخدم للتواصل بين العلماء والمراكز العلمية هو بروتوكول File Transfer Protocol , رغم قوة البروتوكول في حمل كميات ضخمة من المعلومات (مقارنة بالعصر المذكور ) , الا أن العلماء كانوا بحاجة إلى بروتوكول اسرع لمشاركة
النتائج مع المجتمع.
في نهاية الثمانينات قام العالم الإنجليزي تيم بيرنس لي (Tim Berners-Lee) بابتكار بروتوكول النصوص التشعبية المعروف حاليا ب برتوكول HTTP.
الاختلاف بين بروتوكول http و بروتوكول ftp هو أنه باستخدام بروتوكول
http اصبح بإمكان العلماء مشاركة الوثائق المكتوبة باللغة التشعبية html ,و اللذي
بها مميزات لم تكن موجودة في ذاك الوقت , على سبيل المثال الروابط , والصور .
كيف يعمل بروتوكول http ؟
HTTP REQUEST AND RESPONSE
بروتوكول http يعمل بشكل أساسي علي مفهوم الطلب والرد , بنفس منطق التواصل البشري.
ل انشاء اتصال ما , تقوم وجهة المستخدم , او المتصفح ب ارسال طلب للسيرفر المطلوب علي البورت المجهز لاستقبال طلبات http , في كثير من الاحيان يكون البورت هو 80 او 443.
ينقسم الطب المرسل الى جزئين :
الجزء الأول هو الرأس أو header , ويحتوي بداخلة على جميع المعلومات الأساسية اللازمة لإنشاء الاتصال , مثال : الاسم خوارزمية ضغط البيانات (ك gzip) بالاضافة الى معلومات اخرى ك الكوكيز [عناصر رأس الطلب]
الجزء الثاني و هو الجسم او body : وتحتوي على المعلومات الذي سيتم معالجته من قبل الخادم , ويمكن أن يحتوي علي html form أو json object. وجسم الطلب يتواجد فقط في بعض أنواع الطلبات ك post و و put , وهو غير موجود في النوع get علي سبيل المثال. [اطلع علي أنواع الطلبات]
من ثم يقوم الخادم ب استقبال الطلب ومعالجته, استنادا إلى المعلومات المرفقة مع الطلب, ويقوم بإرسال الرد من جديد الى جهازك علي البورت الخاص ب واجهة المستخدم (ويتم إرسالها مع الهيدر الخاص بالطلب)
ينقسم الرد الي جزئين :
الجزء الأول هو رأس الرد او response header : ويحتوي بداخلة على المعلومات الاساسية الخاصة بالرد ك نتيجة الرد , والذي تحتوي علي رقم من 100 الي 599 وكل رقم يعبر عن ناتج الرد , علي سبيل المثال : اذا كان الكود هو 404 هذا يعني ان السيرفر لم يستطع
إيجاد المحتوى المطلوب.
الجزء الثاني هو جسم الرد او response body ويحتوي على محتوى الرد , علي سبيل المثال صفحة html أو صورة.
عناصر رأس الطلب :
Accept :
يقوم هذا العنصر ب اخبار السيرفر عن انواع البيانات المدعومة من وجهة المستخدم , علي سبيل المثال text/html,application/xhtml+xml
ويتم الفصل بين كل نوع و اخر ب فصلة
Accept-Charset :
يقوم هذا العنصر ب اخبار السيرفر ب أنواع الحروف التي تستطيع واجهة المستخدم التعامل معها , على سبيل المثال utf-8 او utf-6Accept-Encoding :
يقوم هذا العنصر ب اخبار السيفر عن خوارزمية الضغط المستخدمة في الاتصال , على سبيل المثال gzipAccept-Language :
يقوم هذا العنصر ب اخبار السيرفر عن اللغة الخاصة بالواجهة علي سبيل المثال , ar_eg او en. وهو حقل غير ضروريAccess-Control-Request-Method :
يحتوي هذا الحقل على نوع الطلب المرسل , على سبيل المثال post او get [أنواع الطلبات]Authorization :
هذا الحقل يستخدم في حالة ان كان الدخول للسيرفر يحتاج الى صلاحيات دخول , وهو عبارة عن اسم مستخدم وكلمة مرور مشفرين بخوارزمية base64 , ويفصل بين اسم المستخدم و كلمة المرور ب ":".Cache-Control :
هذا العنصر يقوم ب اعطاء الخدمات ,التي سيمر عليها الطلب , الامر الخاصة بارشفة الطلب , على سبيل المثال Cache-Control: no-cacheContent-length :
هذا العنصر يحتوي علي طول جسم الطلب بالبايت , على سبيل المثال 1024Cookie :
هذا العنصر يحتوي على الكوكيز المشاركة بين السيرفر والعميل , علي سبيل المثال : Cookie:name:ahmed;age=22Range :
يستخدم هذا العنصر ل مطالبة السيرفر بإرسال جزء من الرد , هذا هو الهيدر اللذي يمكننا من مشاهدة الفيديوهات و تحميل الملفات القابلة للايقاف و الاستعادةUpgrade :
هذا العنصر يحتوي علي طلب من جانب العميل او وجهة المستخدم من أجل تحديث البروتوكول المستخدم للاتصال , مثال Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocketDate :
يحتوي على التاريخ الذي تم إنشاء الطلب به , على سبيل المثال Tue, 28 Apr 2020 15:21:32 GMTProxy-Authorization :
يحتوي على صلاحيات الدخول لسيرفر البروكسي ان وجدIf-Modified-Since :
هذا العنصر يقول للسيرفر إن كان المحتوى المطلوب قد تم تعديله منذ تاريخ معين أم لا , يستخدم كي لا.
في حالة تحققت الحالة يقوم السيرفر بالرد بالكود 304 ل يبلغ واجهة المستخدم أنه لم يتغير اي شئ في المحتوى
Host :
هذا العنصر يحتوي على اسم الهوست, على سبيل المثال coderslive.com:2000Referrer :
هذا العنصر يحتوي علي الرابط المحيل أن أوجد , علي سبيل المثال عندما تدخل علي موقع coderslive.com من خلال فيسبوك , سيكون المحيل هنا هو رابط الصفحة التي قامت بتحويلك على فيسبوكUser-Agent :
هذا العنصر يحتوي علي اسم المتصفح و رقم اصدارة و نظام التشغيل والبنية الخاصة بالمعالج . علي سبيل المثال : User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36عناصر رأس الرد :
Access-Control-Allow-Origin :
هذا العنصر يحتوي على المواقع المصرح لها بالدخول لهذا المحتوى , على سبيل المثال "*", ومعنى هذا أنه مصرح لجميع الموقع الدخول لهذا المحتوى. هذا العنصر يتم استخدامه في عمليات مشاركة المحتوى بين المصادر و في اغلب الاحيان ستجد معه بعض هذه العناصر Access-Control-Allow-Credentials, Access-Control-Expose-Headers, Access-Control-Max-Age, Access-Control-Allow-Methods, Access-Control-Allow-HeadersContent-Encoding :
يحتوي علي نوع خوارزمية التشفير المستخدمة في ضغط البيانات من قبل السيرفر ,على سبيل المثال gzipContent-length :
هذا العنصر يحتوي علي طول جسم الرد بالبايت , على سبيل المثال 12948Content-Type:
يحتوي على نوع البيانات الموجودة في الرد , بالاضافة لنوع التشفير , على سبيل المثال Content-Type: text/html; charset=UTF-8Date :
يحتوي على التاريخ الذي تم إنشاء الرد به , على سبيل المثال Tue, 28 Apr 2020 15:21:32 GMTUpgrade :
هذا العنصر يحتوي علي طلب من جانب السيرفر من أجل تحديث البروتوكول المستخدم للاتصال , مثال Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocketServer :
يحتوي على اسم السيرفر الذي قام بمعالجة الطلب , علي سبيل المثال nginx او apacheExpires :
يحتوي على التاريخ , الذي بعده يصبح المحتوى غير صالحSet-Cookie :
يحتوي على الكوكيز الجديدة الذي على واجهة المستخدم اضافتها على سبيل المثال بعد تسجيل الدخول يطلب السيرفر من المتصفح بان يقوم بإنشاء كوكيز جديدة ب اسم المستخدم Set-Cookie: UserID=midoelhawy; Max-Age=3600; Version=1انواع الطلبات في بروتوكول http :
GET :
هو نوع الطلب المخصص لجلب البيانات وهو نوع الطلب المستخدم من المتصفح بشكل افتراضي.POST :
هو نوع الطلب المستخدم ل اضافة محتوي ما الي السيرفر , على سبيل المثال محتويات html form و يحتوي جسم الطلب هنا علي المحتوي المطلوب معالجته .DELETE :
يستخدم هذا النوع لحذف محتوى ما من السيرفرHEAD :
هذا النوع هو شبيه بالنوع GET , باختلاف أنه لا يحتوي علي جسم للطلب ,ويستخدم بشكل عام لمعرفة ما هي البيانات المطلوبة لتنفيذ طلب معين , دون الحاجة لإرسال كامل بيانات الطلب.PUT :
يستخدم لتحديث محتوى موجود بالفعل على السيرفرTRACE :
هذا النوع لا يتم استخدامه الي لأغراض التحقق , فهو ببساطة يقوم برد نفس الطلب المرسل من قبل الوجهة دون أي تعديلات , و يتم استخدامه لكي تتحقق الوجهة من أن كان الطلب يتم تعديله من قبل الخوادم الرابطة بين السيرفر و الكلاينت.PATCH :
يتم استخدامه لعمل تعديلات بسيطة علي المحتوياكواد الرد الخاصة ببروتوكول http او http response codes :
في بروتوكول http حالة معالجة الطلب يتم التعبير عنها ب كود مكون من 3 أرقام , مثال 500
الرقم الاول يعبر عن طبيعة الحالة , فالخطأ 501 على سبيل المثال يعني ان السيرفر لا يستطيع معالجة نوع الطلب المرسل ,بعض السيرفرات لا يمكنها قبول نوع الطلب delete , بالتالي يقوم السيرفر بالرد برقم 501 ليقول لوجهة المستخدم أن هذا النوع غير مقبول.
قائمة الاكواد :
تعليقات
إرسال تعليق
add_commentإرسال تعليق
مرحبا بكم في مدونتنا