JavaRush /Java Blogu /Random-AZ /Hissə 3. HTTP/HTTPS protokolları

Hissə 3. HTTP/HTTPS protokolları

Qrupda dərc edilmişdir
Bu material “Müəssisələrin İnkişafına Giriş” seriyasının bir hissəsidir. Əvvəlki məqalələr: Salam! Bu gün biz HTTP və HTTPS protokollarını başa düşəcəyik. Ancaq əvvəlcə bir məqama aydınlıq gətirək: söhbət OSI modelinin tətbiq səviyyəsində şəbəkə üzərindən məlumat ötürmə protokollarından gedir. Yadınızdadırsa, əvvəlki məqalələrdən birində OSI modelini müzakirə etmişdik. Və xatırlamırsınızsa, budur . Hissə 3. HTTP/HTTPS protokolları - 1

Məlumat ötürmə protokolu nədir

Bu, ümumi qəbul edilmiş razılaşmaya verilən addır, bunun sayəsində müxtəlif xidmətlərin tərtibatçıları məlumatı vahid formada göndərirlər. Məsələn, Google Chrome-dan istifadə edərək həm Facebook, həm də Twitter-dən məlumat əldə edə bilərsiniz, çünki tərtibatçılar onu standart HTTP protokolundan istifadə edərək ötürür və brauzeriniz onu emal edə bilər. Vahid qaydalar server tərəfi tərtibatçıların özləri üçün də çox əlverişlidir: sizin üçün məlumatı çevirə və tələb olunan protokoldan istifadə edərək göndərə bilən bir çox kitabxana var. HTTP əvvəlcə HTML səhifələrini köçürmək üçün bir protokol kimi düşünülmüşdür. Bu, uzun müddət idi, lakin indi proqramçılar tez-tez həm simləri, həm də media fayllarını onun üzərindən ötürürlər. Ümumiyyətlə, bu protokol çox yönlü və çevikdir və istifadəsi həqiqətən asandır. İndi bunu necə edəcəyimizi anlayaq.

HTTP strukturu

Dərhal qeyd etmək lazımdır ki, HTTP protokolu yalnız mətndən ibarətdir. Yaxşı, bizi ən çox bu mətnin yerləşdiyi struktur maraqlandırır. Hər bir mesaj üç hissədən ibarətdir:
  1. Başlanğıc xətti—xidmət məlumatlarını müəyyən edir.
  2. Başlıqlar - mesaj parametrlərinin təsviri.
  3. Mesaj gövdəsi (Gövdə) - mesaj məlumatları. Başlıqlardan boş sətirlə ayrılmalıdır.
HTTP protokolundan istifadə edərək serverə sorğu göndərə (sorğu) və serverdən cavab (cavab) ala bilərsiniz. Sorğular və cavablar bir qədər fərqli parametrlərə malikdir.

Sadə bir HTTP sorğusu necə görünür

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Başlanğıc xəttində aşağıdakılar var:
  • GET - sorğu metodu;
  • / — sorğu yolu (yol);
  • HTTP/1.1 - məlumat ötürmə protokolunun versiyası.
Sonra başlıqları izləyin:
  • Host — sorğunun ünvanlandığı host;
  • İstifadəçi-Agent sorğu göndərən müştəridir.
Mesaj orqanı yoxdur. HTTP sorğusunda yalnız başlanğıc xətti və Host başlığı tələb olunur. İndi hər şeyə qaydasında baxaq. HTTP sorğusu hansısa metodu ehtiva etməlidir. Onlardan cəmi doqquzu var: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Ən çox yayılmışlar GET və POST-dur. Bu iki üsul əvvəlcə kifayət edəcəkdir. GET - serverdən məzmun tələb edir. Buna görə də, GET metodu ilə sorğuların mesaj gövdəsi yoxdur. Lazım gələrsə, parametrləri bu formatda yol vasitəsilə göndərə bilərsiniz: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Burada: javarush .com — host, /send — sorğu yolu, ? — sorğu parametrlərinin izləndiyini göstərən ayırıcı. Sonda parametrlər ampersandla ayrılmış açar=dəyər formatında verilmişdir. POST - serverdə məlumat dərc edir. POST sorğusu müxtəlif məlumatları ötürə bilər: açar=dəyər formatında parametrlər, JSON, HTML kodu və ya hətta fayllar. Bütün məlumatlar mesajın mətnində ötürülür. Misal üçün:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
Sorğu javarush.com/user/create/json ünvanına göndərilir, protokol versiyası HTTP/1.1-dir. Accept müştərinin hansı cavab formatını alacağını, Məzmun növü mesajın hansı formatda göndərildiyini müəyyən edir. Content-Length - bədəndəki simvolların sayı. HTTP sorğusu çoxlu müxtəlif başlıqlardan ibarət ola bilər. Daha ətraflı məlumatı protokol spesifikasiyasında tapa bilərsiniz .

HTTP cavabları

Sorğunu aldıqdan sonra server onu emal edir və müştəriyə cavab göndərir:
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>
Cavabın başlanğıc sətirində protokol versiyası (HTTP/1.1), Vəziyyət kodu (200), Vəziyyətin təsviri (OK) var. Başlıqlar məzmunun növünü və uzunluğunu göstərir. Cavabın mətni brauzerin HTML səhifəsinə çəkəcəyi HTML kodunu ehtiva edir.

Cavab Vəziyyəti Kodları

Mesajın gövdəsi və başlıqları ilə hər şey aydındır, lakin status kodları haqqında bir neçə söz deməyə dəyər. Cavab Vəziyyəti Kodları həmişə üç rəqəmdən ibarətdir və kodun ilk rəqəmi cavabın kateqoriyasını göstərir:
  • 1xx - məlumat. Sorğu qəbul edildi, server davam etməyə hazırdır;
  • 2xx - uğurlu. Sorğu qəbul edilib, başa düşülüb və işlənib;
  • 3xx - yönləndirmə. Sorğunu emal etmək üçün aşağıdakı addımlar yerinə yetirilməlidir;
  • 4xx - müştəri xətası. Sorğuda səhvlər var və ya protokola uyğun gəlmir;
  • 5xx - server xətası. Düzgün tərtib olunsa da, server sorğunu emal edə bilmədi;
Koddakı ikinci və üçüncü rəqəmlər cavabı təfərrüatlandırır. Misal üçün:
  • 200 OK — sorğu alındı ​​və uğurla emal olundu;
  • 201 Yaradıldı — sorğu qəbul edildi və uğurla emal olundu, nəticədə yeni resurs və ya onun nümunəsi yaradıldı;
  • 301 Daimi köçürüldü - tələb olunan resurs daimi olaraq köçürüldü və ona növbəti sorğular yeni ünvanda baş verməlidir;
  • 307 Temporary Redirect - resurs müvəqqəti olaraq köçürülüb. Hələlik siz avtomatik yönləndirmədən istifadə edərək ona daxil ola bilərsiniz;
  • 403 Qadağan - sorğu aydındır, lakin icazə tələb olunur;
  • 404 Tapılmadı - server bu ünvanda resurs tapmadı;
  • 501 Həyata keçirilmir - server bu sorğuya cavab vermək üçün funksionallığı dəstəkləmir;
  • 505 HTTP Version Dəstəklənmir - server HTTP protokolunun müəyyən edilmiş versiyasını dəstəkləmir.
Cavab statusu koduna əlavə olaraq status təsviri də göndərilir ki, bu da konkret statusun nə demək olduğunu başa düşməyi asanlaşdırır. HTTP protokolu çox praktikdir: o, çoxlu sayda başlıq təmin edir, onlardan istifadə edərək müştəri və server arasında çevik əlaqə qura bilərsiniz. Bütün sorğu və cavab başlıqları, sorğu metodları və cavab status kodları bir məqalədə nəzərdən keçirilə bilməz. Lazım gələrsə, rəsmi protokolu oxuya bilərsiniz spesifikasiyası , bütün nüansları təsvir edir. HTTP protokolu adətən port 80-də istifadə olunur, ona görə də 80-ci portda bitən ünvanı görəndə ona HTTP vasitəsilə daxil olmaq lazım olduğuna əmin ola bilərsiniz. Texnologiyanın inkişafı və fərdi məlumatların İnternetdə aktiv hərəkəti ilə müştərinin serverə ötürdüyü məlumatların əlavə qorunmasını necə təmin etmək barədə düşünməli olduq. Nəticə HTTPS protokolu oldu.

HTTPS və HTTP arasındakı fərq nədir

HTTPS sintaktik olaraq HTTP protokolu ilə eynidir, yəni eyni başlanğıc sətirləri və başlıqlardan istifadə edir. Yeganə fərqlər əlavə şifrələmə və standart port (443) . HTTPS HTTP və TCP arasında, yəni tətbiq və nəqliyyat təbəqələri arasında şifrələnir. Əgər bunun nə olduğunu unutmusunuzsa, OSI modeli haqqında məqaləyə nəzər salın . Müasir şifrələmə standartı TLS-dir. Biz bu mövzuya çox da dərindən girməyəcəyik, lakin yadda saxlayın ki, şifrələmə məlumat nəqliyyat qatına çatmazdan əvvəl baş verir . HTTPS sorğunun göndərildiyi host və port istisna olmaqla, tamamilə bütün məlumatları şifrələyir. Serveri HTTP əvəzinə HTTPS protokolundan istifadə etməyə dəyişmək üçün server kodunu dəyişməyə ehtiyacımız yoxdur. Bu funksiya servlet konteynerlərində aktivləşdirilib, bundan sonrakı məqalələrdə danışacağıq. Bu gün üçün hamısı budur. Amma bir dəqiqə gözləyin. HTTP sorğularını hiss etmək üçün Google Chrome-u açın, F12 düyməsini basın, Şəbəkə nişanını seçin. Brauzeriniz tərəfindən göndərilən/qəbul edilən bütün sorğular və cavablar burada göstəriləcək. Hissə 4. Maven Əsasları Hissə 5. Servletlər. Sadə veb proqramın yazılması Hissə 6. Servlet konteynerləri Hissə 7. MVC (Model-View-Controller) nümunəsinin təqdimatı Hissə 8. Kiçik yaylı yükləmə proqramının yazılması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION