JavaRush /Java blogi /Random-UZ /3-qism. HTTP/HTTPS protokollari

3-qism. HTTP/HTTPS protokollari

Guruhda nashr etilgan
Ushbu material "Korxonani rivojlantirishga kirish" seriyasining bir qismidir. Oldingi maqolalar: Salom! Bugun biz HTTP va HTTPS protokollarini tushunamiz. Lekin birinchi navbatda, bir fikrga aniqlik kiritamiz: biz OSI modelining amaliy qatlamida tarmoq orqali ma'lumotlarni uzatish protokollari haqida gapiramiz. Esingizda bo'lsa, biz avvalgi maqolalardan birida OSI modelini muhokama qilgan edik. Va agar eslamasangiz, bu erda . 3-qism. HTTP/HTTPS protokollari - 1

Ma'lumotlarni uzatish protokoli nima

Bu umumiy qabul qilingan kelishuvga berilgan nom, buning yordamida turli xizmatlarni ishlab chiquvchilar ma'lumotni yagona shaklda yuboradilar. Masalan, Google Chrome-dan foydalanib, siz Facebook va Twitter-dan ham ma'lumot olishingiz mumkin, chunki ishlab chiquvchilar uni standart HTTP protokoli yordamida uzatadilar va brauzeringiz uni qayta ishlashi mumkin. Yagona qoidalar server tomonidagi ishlab chiquvchilarning o'zlari uchun ham juda qulaydir: siz uchun ma'lumotni o'zgartira oladigan va kerakli protokol yordamida jo'natadigan ko'plab kutubxonalar mavjud. HTTP dastlab HTML sahifalarini uzatish protokoli sifatida ishlab chiqilgan. Bu uzoq vaqt davomida shunday bo'lgan, ammo endi dasturchilar ko'pincha u orqali ikkala satr va media fayllarni o'tkazishadi. Umuman olganda, ushbu protokol ko'p qirrali va moslashuvchan va undan foydalanish juda oson. Endi buni qanday qilishni aniqlaylik.

HTTP tuzilishi

Darhol shuni ta'kidlash kerakki, HTTP protokoli faqat matndan iborat. Xo'sh, biz ushbu matn joylashgan tuzilishga qiziqamiz. Har bir xabar uch qismdan iborat:
  1. Boshlang'ich qator - xizmat ma'lumotlarini belgilaydi.
  2. Sarlavhalar - xabar parametrlarining tavsifi.
  3. Xabar tanasi (Body) - xabar ma'lumotlari. Sarlavhalardan bo'sh qator bilan ajratilishi kerak.
HTTP protokolidan foydalanib, siz serverga so'rov yuborishingiz mumkin (so'rov) va serverdan javob olishingiz mumkin (javob). So'rovlar va javoblar biroz boshqacha parametrlarga ega.

Oddiy HTTP so'rovi qanday ko'rinadi

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Boshlang'ich qatorda quyidagilar mavjud:
  • GET - so'rov usuli;
  • / — soʻrov yoʻli (yoʻl);
  • HTTP/1.1 - ma'lumotlarni uzatish protokolining versiyasi.
Keyin sarlavhalar keladi:
  • Xost - so'rov yuboriladigan xost;
  • User-Agent so'rov yuboradigan mijozdir.
Xabar tanasi yo'q. HTTP so'rovida faqat boshlang'ich qator va Xost sarlavhasi talab qilinadi. Endi hamma narsani tartibda ko'rib chiqaylik. HTTP so'rovi qandaydir usulni o'z ichiga olishi kerak. Ulardan jami to'qqiztasi bor: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Eng keng tarqalganlari GET va POST. Avvaliga bu ikki usul etarli bo'ladi. GET - serverdan tarkibni so'raydi. Shuning uchun, GET usuli bilan so'rovlar xabar tanasiga ega emas. Agar kerak bo'lsa, parametrlarni ushbu formatdagi yo'l orqali yuborishingiz mumkin: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Bu yerda: javarush .com — xost, /send — soʻrov yoʻli, ? — soʻrov parametrlariga amal qilishini koʻrsatuvchi ajratuvchi. Oxirida parametrlar ampersand bilan ajratilgan kalit=qiymat formatida keltirilgan. POST - serverdagi ma'lumotlarni e'lon qiladi. POST so'rovi turli xil ma'lumotlarni uzatishi mumkin: kalit = qiymat formatidagi parametrlar, JSON, HTML kodi yoki hatto fayllar. Barcha ma'lumotlar xabarning asosiy qismida uzatiladi. Masalan:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
So'rov javarush.com/user/create/json manziliga yuboriladi, protokol versiyasi HTTP/1.1. Qabul qilish mijoz qanday javob formatini olishni kutayotganini, Content-Type esa xabarning qaysi formatda yuborilishini belgilaydi. Content-Length - tanadagi belgilar soni. HTTP so'rovi turli xil sarlavhalarni o'z ichiga olishi mumkin. Batafsil ma'lumotni protokol spetsifikatsiyasida topishingiz mumkin .

HTTP javoblari

So'rovni olgandan so'ng, server uni qayta ishlaydi va mijozga javob yuboradi:
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>
Javobdagi boshlang'ich qatorda protokol versiyasi (HTTP/1.1), Status Code (200), Status Description (OK) mavjud. Sarlavhalar tarkibning turi va uzunligini ko'rsatadi. Javobning asosiy qismida brauzer HTML sahifasiga tortadigan HTML kod mavjud.

Javob holati kodlari

Xabar tanasi va sarlavhalari bilan hamma narsa aniq, ammo holat kodlari haqida bir necha so'z aytishga arziydi. Javob holati kodlari har doim uchta raqamdan iborat bo'lib, kodning birinchi raqami javob toifasini bildiradi:
  • 1xx - ma'lumot. So'rov qabul qilindi, server davom etishga tayyor;
  • 2xx - muvaffaqiyatli. So'rov qabul qilingan, tushunilgan va ko'rib chiqilgan;
  • 3xx - qayta yo'naltirish. So'rovni ko'rib chiqish uchun quyidagi bosqichlarni bajarish kerak;
  • 4xx - mijoz xatosi. So'rovda xatolar mavjud yoki protokolga mos kelmaydi;
  • 5xx - server xatosi. Server so'rovni qayta ishlay olmadi, garchi u to'g'ri tuzilgan bo'lsa;
Koddagi ikkinchi va uchinchi raqamlar javobni batafsil ko'rsatadi. Masalan:
  • 200 OK — soʻrov qabul qilindi va muvaffaqiyatli qayta ishlandi;
  • 201 Yaratilgan — soʻrov qabul qilindi va muvaffaqiyatli qayta ishlandi, natijada yangi resurs yoki uning namunasi yaratildi;
  • 301 Doimiy ko'chirildi - so'ralgan resurs doimiy ravishda ko'chirildi va unga keyingi so'rovlar yangi manzilda amalga oshirilishi kerak;
  • 307 Vaqtinchalik qayta yo'naltirish - resurs vaqtincha ko'chirildi. Hozircha siz unga avtomatik yo'naltirish yordamida kirishingiz mumkin;
  • 403 Taqiqlangan - so'rov aniq, lekin avtorizatsiya talab qilinadi;
  • 404 topilmadi - server ushbu manzildagi manbani topa olmadi;
  • 501 Amalga oshirilmadi - server ushbu so'rovga javob berish funksiyasini qo'llab-quvvatlamaydi;
  • 505 HTTP versiyasi qo'llab-quvvatlanmaydi - server HTTP protokolining belgilangan versiyasini qo'llab-quvvatlamaydi.
Javob holati kodi bilan bir qatorda holat tavsifi ham yuboriladi, bu esa muayyan holat nimani anglatishini tushunishni intuitiv qiladi. HTTP protokoli juda amaliy: u ko'p sonli sarlavhalarni taqdim etadi, ulardan foydalanib siz mijoz va server o'rtasida moslashuvchan aloqani o'rnatishingiz mumkin. Barcha so'rov va javob sarlavhalari, so'rov usullari va javob holati kodlari bitta maqolada ko'rib chiqilishi mumkin emas. Agar kerak bo'lsa, rasmiy protokolni o'qishingiz mumkin spetsifikatsiya , barcha nuanslarni tavsiflaydi. HTTP protokoli odatda 80-portda ishlatiladi, shuning uchun 80-portda tugaydigan manzilni ko'rganingizda, unga HTTP orqali kirish kerakligiga ishonch hosil qilishingiz mumkin. Texnologiyaning rivojlanishi va Internetda shaxsiy ma'lumotlarning faol harakatlanishi bilan biz mijoz serverga uzatadigan ma'lumotni qo'shimcha himoya qilishni qanday ta'minlash haqida o'ylashimiz kerak edi. Natijada HTTPS protokoli paydo bo'ldi.

HTTPS va HTTP o'rtasidagi farq nima

HTTPS sintaktik jihatdan HTTP protokoli bilan bir xil, ya'ni u bir xil boshlang'ich satr va sarlavhalardan foydalanadi. Faqatgina farqlar qo'shimcha shifrlash va standart port (443) . HTTPS HTTP va TCP o'rtasida, ya'ni dastur va transport qatlamlari o'rtasida shifrlangan. Agar siz nima ekanligini unutgan bo'lsangiz, OSI modeli haqidagi maqolani ko'rib chiqing . Zamonaviy shifrlash standarti TLS hisoblanadi. Biz ushbu mavzuni chuqur o'rganmaymiz, lekin shifrlash ma'lumotlar transport qatlamiga yetib borishidan oldin sodir bo'lishini unutmang . HTTPS so'rov yuborilgan xost va portdan tashqari mutlaqo barcha ma'lumotlarni shifrlaydi. Serverni HTTP o'rniga HTTPS protokolidan foydalanishga o'tkazish uchun server kodini o'zgartirishimiz shart emas. Ushbu xususiyat servlet konteynerlarida yoqilgan, biz bu haqda keyingi maqolalarda gaplashamiz. Bugun hammasi shu. Lekin bir daqiqa kuting. HTTP so'rovlarini sezish uchun Google Chrome-ni oching, F12 tugmasini bosing, Tarmoq yorlig'ini tanlang. Brauzeringiz tomonidan yuborilgan/qabul qilingan barcha so‘rovlar va javoblar shu yerda ko‘rsatiladi. 4-qism. Maven asoslari 5-qism. Servletlar. Oddiy veb-ilovani yozish 6-qism. Servlet konteynerlari 7-qism. MVC (Model-View-Controller) naqshini tanishtirish 8-qism. Kichkina bahor-boot ilovasini yozish
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION