هذه المادة جزء من سلسلة "مقدمة لتطوير المشاريع". المقالات السابقة:
مرحبًا! اليوم سوف نفهم بروتوكولات HTTP و HTTPS. لكن أولاً، دعونا نوضح نقطة واحدة: نحن نتحدث عن بروتوكولات نقل البيانات عبر الشبكة في طبقة التطبيق لنموذج OSI. كما تتذكر، ناقشنا نموذج OSI في إحدى المقالات السابقة. وإذا كنت لا تتذكر، وهنا هو .
تجدر الإشارة على الفور إلى أن بروتوكول HTTP يتكون من نص فقط. حسنًا، نحن مهتمون أكثر بالبنية التي يوجد بها هذا النص. تتكون كل رسالة من ثلاثة أجزاء:
ما هو بروتوكول نقل البيانات
هذا هو الاسم الذي يطلق على الاتفاقية المقبولة عمومًا، والتي بفضلها يرسل مطورو الخدمات المختلفة المعلومات في نموذج واحد. على سبيل المثال، باستخدام Google Chrome، يمكنك الحصول على معلومات من كل من Facebook وTwitter، لأن المطورين ينقلونها باستخدام بروتوكول HTTP القياسي، ويمكن لمتصفحك التعامل معها. تعد القواعد الموحدة أيضًا ملائمة جدًا للمطورين من جانب الخادم أنفسهم: هناك العديد من المكتبات التي يمكنها تحويل المعلومات لك وإرسالها باستخدام البروتوكول المطلوب. تم تصميم HTTP في الأصل كبروتوكول لنقل صفحات HTML. كان هذا هو الحال لفترة طويلة، ولكن الآن يقوم المبرمجون بنقل كل من السلاسل وملفات الوسائط عبره. بشكل عام، هذا البروتوكول متعدد الاستخدامات ومرن، كما أنه سهل الاستخدام حقًا. الآن دعونا معرفة كيفية القيام بذلك.
هيكل HTTP
تجدر الإشارة على الفور إلى أن بروتوكول HTTP يتكون من نص فقط. حسنًا، نحن مهتمون أكثر بالبنية التي يوجد بها هذا النص. تتكون كل رسالة من ثلاثة أجزاء:
- خط البداية—يحدد بيانات الخدمة.
- الرؤوس - وصف معلمات الرسالة.
- نص الرسالة (النص) - بيانات الرسالة. يجب فصلها عن العناوين بخط فارغ.
كيف يبدو طلب HTTP البسيط
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
يحتوي خط البداية على:
- الحصول على - طريقة الطلب؛
- / - مسار الطلب (المسار)؛
- HTTP/1.1 - إصدار بروتوكول نقل البيانات.
- المضيف - المضيف الذي يتم توجيه الطلب إليه؛
- وكيل المستخدم هو العميل الذي يرسل الطلب.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
يتم إرسال الطلب إلى javarush.com/user/create/json، إصدار البروتوكول هو HTTP/1.1. يحدد القبول تنسيق الاستجابة الذي يتوقع العميل تلقيه، ويحدد نوع المحتوى التنسيق الذي سيتم إرسال نص الرسالة به. طول المحتوى - عدد الأحرف في الجسم. يمكن أن يحتوي طلب HTTP على العديد من الرؤوس المختلفة. يمكن العثور على مزيد من التفاصيل في مواصفات البروتوكول .
استجابات HTTP
بعد تلقي الطلب، يقوم الخادم بمعالجته وإرسال الرد إلى العميل:HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
يحتوي سطر البداية في الاستجابة على إصدار البروتوكول (HTTP/1.1)، ورمز الحالة (200)، ووصف الحالة (OK). تشير العناوين إلى نوع المحتوى وطوله. يحتوي نص الاستجابة على كود HTML الذي سيرسمه المتصفح في صفحة HTML.
رموز حالة الاستجابة
كل شيء واضح فيما يتعلق بنص الرسالة ورؤوسها، ولكن من المفيد قول بضع كلمات حول رموز الحالة. تتكون رموز حالة الاستجابة دائمًا من ثلاثة أرقام، ويشير الرقم الأول من الرمز إلى فئة الاستجابة:- 1xx - معلوماتية. تم استلام الطلب، الخادم جاهز للمتابعة؛
- 2xx - ناجح. تم استلام الطلب وفهمه ومعالجته؛
- 3xx - إعادة التوجيه. ويجب تنفيذ الخطوات التالية لمعالجة الطلب؛
- 4xx - خطأ العميل. يحتوي الطلب على أخطاء أو لا يتوافق مع البروتوكول؛
- 5xx - خطأ في الخادم. لم يتمكن الخادم من معالجة الطلب، على الرغم من أنه تم كتابته بشكل صحيح؛
- 200 موافق — تم استلام الطلب ومعالجته بنجاح؛
- 201 تم الإنشاء — تم استلام الطلب ومعالجته بنجاح، مما أدى إلى إنشاء مورد جديد أو مثيله؛
- 301 تم النقل بشكل دائم - تم نقل المورد المطلوب بشكل دائم، ويجب أن تتم الطلبات اللاحقة إليه على العنوان الجديد؛
- 307 إعادة التوجيه المؤقتة - تم نقل المورد مؤقتًا. في الوقت الحالي، يمكنك الوصول إليه باستخدام إعادة التوجيه التلقائي؛
- 403 محظور - الطلب واضح، لكن التفويض مطلوب؛
- 404 لم يتم العثور عليه - لم يعثر الخادم على المورد على هذا العنوان؛
- 501 لم يتم تنفيذه - لا يدعم الخادم وظيفة الاستجابة لهذا الطلب؛
- 505 إصدار HTTP غير مدعوم - لا يدعم الخادم الإصدار المحدد من بروتوكول HTTP.
GO TO FULL VERSION