CodeGym /Java блог /Случаен /Част 3. HTTP/HTTPS
John Squirrels
Ниво
San Francisco

Част 3. HTTP/HTTPS

Публикувано в групата
Този материал е част от поредицата "Въведение в развитието на предприятието". Предишни статии: Част 3. HTTP/HTTPS - 1здрасти Днес ще научим за протоколите HTTP и HTTPS. Но първо, нека изясним една точка: говорим за протоколи за изпращане на данни през мрежа на ниво приложение на OSI модела. Може би си спомняте, че се запознахме с OSI модела в една от предишните статии. Ако не си спомняте това, ето го .

Какво е протокол за комуникация на данни?

Това наричаме съгласуван набор от правила, които позволяват на разработчиците на различни услуги да изпращат информация във формат, който другите могат да разберат. Например, можете да използвате Google Chrome, за да получавате информация Howто от Facebook, така и от Twitter, тъй като разработчиците я изпращат чрез стандартния HTTP протокол, който позволява на вашия браузър да я обработва. Единните правила са много удобни за хората, които разработват сървърната част: има много библиотеки, които могат да преобразуват информация instead of вас и да я изпращат, използвайки подходящия протокол. Първоначално HTTP е замислен като протокол за изпращане на HTML страници. Това е начинът, по който се използваше дълго време, но сега програмистите често го използват, за да изпращат Howто низове, така и медийни файлове. Като цяло този протокол е универсално приет и многофункционален и е наистина лесен за използване. И сега ще проучим How да го използваме.

Структурата на HTTP

Веднага трябва да отбележим, че HTTP протоколът се състои само от текст. Това, което най-много ни интересува, е структурата на този текст. Всяко съобщение се състои от три части:
  1. Начален ред — Това определя някои домакински данни.
  2. Заглавки — Те описват параметрите на съобщението.
  3. Тяло — Това е съдържанието на съобщението. Основният текст трябва да бъде отделен от заглавията с празен ред.
HTTP протоколът се използва за изпращане на заявки до сървър и получаване на отговори от сървъра. Параметрите на заявките и отговорите са малко по-различни.

Ето How изглежда една проста HTTP заявка:


GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Началната линия показва:
  • GET — Методът на заявката
  • / — Пътят на заявката
  • HTTP/1.1 — Версията на протокола
След това идват заглавията:
  • Хост — Хостът, към който е addressирана заявката
  • User-Agent — Клиентът, изпращащ заявката
Основният текст на съобщението липсва. В HTTP заявка са необходими само началният ред и заглавката „Хост“. Сега нека разгледаме всичко стъпка по стъпка. Една HTTP заявка трябва да съдържа няHowъв метод. Има девет от тях: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Най-често срещаните са GET и POST. Тези два метода ще бъдат достатъчни в началото. GET — Този метод изисква съдържание от сървъра. Съответно заявките с метода GET нямат тяло на съобщението. Но ако трябва, можете да подадете параметри през пътя (в началния ред) в следния формат:

https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
където codegym.cc е хостът, /send е пътят на заявката и ? е разделител, който показва, че параметрите на заявката следват. В края са изброени двойки ключ-стойност ("ключ=стойност"), разделени с амперсанд. POST — Този метод публикува информация на сървъра. POST заявката може да изпраща различни видове информация: параметри като двойки „ключ=стойност“, JSON, HTML code or дори файлове. Цялата информация се изпраща в тялото на съобщението. Например:

POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
Заявката се изпраща до codegym.cc/user/create/json, а versionта на протокола е HTTP/1.1. „Приемам“ показва формата на отговора, който клиентът очаква да получи. „Content-Type“ показва формата на тялото на съобщението, изпратено в заявката. „Дължина на съдържанието“ е броят знаци в тялото. Една 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>
Началният ред на отговора съдържа versionта на протокола (HTTP/1.1), code на състоянието (200) и описание на състоянието (OK). Неговите заглавия включват типа и дължината на съдържанието. Основният текст на отговора съдържа HTML code, който браузърът изобразява като HTML page.

Кодове за състояние на отговор

Всичко е ясно по отношение на тялото и заглавките на съобщението, но трябва да кажем няколко думи за статус codeовете. Кодовете за състояние на отговор са винаги трицифрени. Първата цифра на codeа показва категорията на отговора:
  • 1xx — Информационен. Заявката е получена. Сървърът е готов да продължи.
  • 2xx — Успешно. Искането е получено, разбрано и обработено.
  • 3xx — Пренасочване. Трябва да се извършат допълнителни действия за обработка на заявката.
  • 4xx — Грешка на клиента. Заявката съдържа грешки or не отговаря на протокола.
  • 5xx — Грешка в сървъра. Заявката беше съставена правилно, но сървърът не можа да я обработи.
Втората и третата цифра в codeа показват по-специфичен отговор. Например:
  • 200 OK — Заявката е получена и обработена успешно.
  • 201 Създаден — Заявката е получена и обработена успешно, което води до създаването на нов ресурс or екземпляр.
  • 301 Преместен за постоянно — Исканият ресурс е преместен за постоянно. Следващите заявки към него трябва да се правят с помощта на новия address.
  • 307 Временно пренасочване — Ресурсът е преместен временно. Засега той може да бъде достъпен чрез автоматично пренасочване.
  • 403 Забранено — Искането беше разбрано, но се изисква разрешение.
  • 404 Не е намерено — Сървърът не е намерил ресурса на този address.
  • 501 Not Implemented — Сървърът не поддържа функционалността, необходима за отговор на заявката.
  • 505 HTTP versionта не се поддържа — Сървърът не поддържа определената version на HTTP протокола.
В допълнение към codeа на състоянието на отговора се изпраща и описание на състоянието. Това помага да се изясни Howво означава всеки конкретен статус. HTTP протоколът е много практичен: той предоставя голям брой заглавки, които можете да използвате, за да организирате много гъвкава комуникация между клиент и сървър. Пълното разглеждане на всички заглавки на заявки и отговори, методи на заявки и codeове за състояние на отговор би било твърде много за една статия. Ако трябва, можете да прочетете официалната спецификация на протокола, който описва всички нюанси. Обичайно е да се използва HTTP протокол на порт 80, така че когато видите URL, който завършва с порт 80, можете да сте сигурни, че трябва да използвате HTTP за достъп до него. Тъй като технологиите се развиха и личните данни започнаха да се изпращат през Интернет, стана необходимо да се мисли How да се осигури допълнителна защита на информацията, която клиентът изпраща на сървъра. Резултатът от това мислене беше HTTPS протоколът.

Разликата между HTTPS и HTTP

По отношение на синтаксиса HTTPS е идентичен с HTTP протокола. Това означава, че използва същите начални редове и заглавки. Единствените разлики са допълнителното криптиране и порта по подразбиране (443) . HTTPS е криптиран между HTTP и TCP, тоест между приложния и транспортния слой. Ако сте забравor Howво означава това, вижте статията за OSI модела . Днешният стандарт за криптиране е TLS. Няма да навлизаме твърде много в тази тема, но не забравяйте, че криптирането се случва преди информацията да достигне транспортния слой. В HTTPS абсолютно цялата информация е криптирана, с изключение на хоста и порта, където се изпраща заявката. Превключването на сървър да използва HTTPS протокола instead of HTTP не изисква използване за промяна на codeа на сървъра. Тази функция е активирана в сервлет контейнери, които ще обсъдим в следващите статии. И това е всичко за днес. Всъщност, изчакайте малко. За да получите някои HTTP заявки, отворете Google Chrome, натиснете F12 и изберете раздела „Мрежа“. Всички заявки и отговори, изпратени/получени от вашия браузър, ще бъдат показани тук. Част 4. Основите на Maven. Част 5. Сървлети и Java Servlet API. Писане на просто уеб приложение Част 6. Контейнери на сервлети Част 7. Представяне на модела MVC (Model-View-Controller)
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION