Блог за уеб технологии, маркетинг и SEO, мотивация и продуктивност
Как работи HTTP: протоколът зад всяка уеб страница
HTTP е основният протокол, използван в World Wide Web за обмен на информация (HTML страници, изображения, видео и др.) между уеб браузър (клиент) и уеб сървър
Статията „Как работи HTTP“ е част от серията „Как работи уебът“, в която разглеждам как функционира интернет – от DNS и от IP адресите до парсването на HTML и начина, по който браузърите и търсачките обработват страниците: Как работи уебът: от DNS до Google индекс
HTTP (HyperText Transfer Protocol) е основният протокол, върху който се изгражда целият уеб. Всеки път, когато отваряш уебсайт, изпращаш имейл или пускаш видео онлайн – HTTP работи зад кулисите. В тази статия ще разбереш как точно функционира той, какви са основните му концепции и защо е толкова важен за съвременния интернет.

Мястото на HTTP в процеса:
URL
↓
DNS
↓
IP address
↓
Web server
↓
HTTP request
↓
HTML document
↓
HTML parsing
↓
DOM
Съдържание на тази страница:
Какво е HTTP?
HTTP е протокол от тип „клиент-сървър“ (client-server), който дефинира правилата за комуникация между уеб браузъри и уеб сървъри. Разработен е от Тим Бернърс-Лий в края на 80-те и началото на 90-те години на 20 век и оттогава е в основата на World Wide Web.
Обяснено: HTTP е „езикът“, на който браузърът ти говори със сървъра, за да получиш уеб страница.
HTTP е stateless протокол – това означава, че всяка заявка е независима и сървърът не пази информация за предишни заявки. Именно затова съществуват технологии като бисквитки (cookies) и сесии (sessions), които симулират „памет“ между заявките.
Как работи HTTP заявката?
Когато въведеш адрес в браузъра си, се случва следното:
Стъпка 1. DNS резолюция
Браузърът превежда домейна (например www.example.com) в IP адрес чрез DNS (Domain Name System). Без IP адреса компютърът не знае „къде да изпрати писмото“.
Виж какво е DNS и как намира сайтовете в интернет.
Стъпка 2. TCP връзка
Браузърът установява TCP (Transmission Control Protocol) връзка със сървъра. Това е „ръкостискане“ (handshake), което гарантира, че двете страни са готови за комуникация.
Стъпка 3. HTTP заявка (Request)
Браузърът изпраща HTTP заявка до сървъра. Тя изглежда по следния начин:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Заявката се състои от:
- Метод (GET, POST и др.);
- URI (пътят до ресурса);
- Версия на протокола (HTTP/1.1, HTTP/2);
- Хедъри (допълнителна информация);
- Тяло (body – при POST заявки, например).
Стъпка 4. HTTP отговор (Response)
Сървърът обработва заявката и връща отговор:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
<!DOCTYPE html>
<html>...
Отговорът включва:
- Статус код (200, 404, 500 и др.);
- Хедъри;
- Тяло (съдържанието на страницата).
Стъпка 5. Рендиране
След като браузърът получи HTML документа, започва процесът на HTML parsing.
HTML се превръща в DOM дърво, което браузърът използва, за да изгради страницата.
След това се зареждат допълнителни ресурси като CSS, JavaScript и изображения.
HTTP методи
HTTP дефинира различни методи (известни още като „глаголи“), всеки от които указва какво действие иска клиентът:
| Метод | Предназначение | Пример за употреба |
|---|---|---|
| GET | Получаване на ресурс | Зареждане на уеб страница |
| POST | Изпращане на данни | Попълване на форма, регистрация |
| PUT | Пълна замяна на ресурс | Актуализиране на целия профил |
| PATCH | Частична промяна | Промяна само на имейл |
| DELETE | Изтриване на ресурс | Изтриване на акаунт |
| HEAD | Само хедъри (без тяло) | Проверка дали ресурсът съществува |
| OPTIONS | Поддържани методи | CORS preflight заявки |
Каква е разликата между GET и POST?
GET пренася данните в URL (видими в адресната лента) и е подходящ за търсения и навигация.
POST пренася данните в тялото на заявката (не се виждат в URL), което го прави подходящ за форми, логин и изпращане на чувствителна информация.
HTTP статус кодове
Статус кодовете са тризначни числа, които сървърът връща, за да укаже резултата от заявката. Разделени са в 5 категории:
2xx – Успех
| Код | Значение |
|---|---|
| 200 OK | Заявката е успешна |
| 201 Created | Ресурсът е създаден успешно |
| 204 No Content | Успех, но без върнато съдържание |
3xx – Пренасочване
| Код | Значение |
|---|---|
| 301 Moved Permanently | Постоянно пренасочване |
| 302 Found | Временно пренасочване |
| 304 Not Modified | Ресурсът не е променен (кеш) |
4xx – Грешка от страна на клиента
| Код | Значение |
|---|---|
| 400 Bad Request | Невалидна заявка |
| 401 Unauthorized | Нужно е удостоверяване |
| 403 Forbidden | Достъпът е забранен |
| 404 Not Found | Ресурсът не съществува |
| 429 Too Many Requests | Твърде много заявки (rate limiting) |
5xx – Грешка от страна на сървъра
| Код | Значение |
|---|---|
| 500 Internal Server Error | Вътрешна грешка на сървъра |
| 502 Bad Gateway | Лош отговор от upstream сървър |
| 503 Service Unavailable | Сървърът е недостъпен |
HTTP хедъри
HTTP хедърите са двойки ключ-стойност, които предоставят допълнителна информация за заявката или отговора.
Важни хедъри в заявката (Request Headers)
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: bg-BG,bg;q=0.9
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Cookie: session_id=abc123
Важни хедъри в отговора (Response Headers)
Content-Type: text/html; charset=UTF-8
Content-Length: 5120
Cache-Control: max-age=3600
Set-Cookie: session_id=xyz789; HttpOnly; Secure
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000
Защо хедърите са важни?
- Сигурност –
Content-Security-Policy,X-Frame-Options; - Кеширане –
Cache-Control,ETag; - Удостоверяване –
Authorization; - CORS – контрол на кросдоменни заявки.
HTTP vs HTTPS
HTTPS (HyperText Transfer Protocol Secure) е защитената версия на HTTP. Разликата е, че HTTPS криптира комуникацията чрез TLS (Transport Layer Security).
| Характеристика | HTTP | HTTPS |
|---|---|---|
| Криптиране | ❌ Няма | ✅ TLS/SSL |
| Сигурност | Уязвим | Защитен |
| Порт по подразбиране | 80 | 443 |
| SEO предимство | ❌ | ✅ |
| Браузърно предупреждение | ⚠️ „Not Secure“ | 🔒 Катинарче |
Важно: Днес всеки уебсайт трябва да използва HTTPS. Google понижава в резултатите от търсене сайтовете без HTTPS, а браузърите ги маркират като „несигурни“.
Как работи TLS „ръкостискането“?
- Клиентът изпраща поддържаните криптографски алгоритми.
- Сървърът избира алгоритъм и изпраща сертификата си.
- Клиентът верифицира сертификата.
- Двете страни генерират общ таен ключ.
- Комуникацията вече е криптирана.
Как HTTP влияе на SEO
HTTP има значение и за SEO. Търсачките анализират HTTP статус кодовете и хедърите, за да разберат как трябва да обработят страницата.
Например:
- 200 OK показва, че страницата е достъпна.
- 301 Moved Permanently се използва за постоянни пренасочвания.
- 404 Not Found означава, че ресурсът не съществува.
HTTP/1.1, HTTP/2 и HTTP/3
HTTP/1.0 и HTTP/1.1
HTTP/1.1 (1997) добавя поддръжка на Keep-Alive (постоянни връзки), което значително подобрява производителността. Все пак страда от проблема Head-of-Line Blocking – всяка заявка чака предишната да приключи.
HTTP/2 (2015)
HTTP/2 решава ключови проблеми с производителността:
- Мултиплексиране – множество заявки по една TCP връзка едновременно.
- Компресия на хедъри (HPACK).
- Server Push – сървърът може да изпрати ресурси преди клиентът да ги поиска.
- Бинарен протокол (не текстов).
HTTP/3 (2022)
HTTP/3 замества TCP с QUIC (базиран на UDP):
- По-бързо установяване на връзка.
- По-добра производителност при нестабилна мрежа.
- Вградено криптиране (TLS 1.3).
- Елиминира Head-of-Line Blocking на транспортно ниво.
HTTP в практиката
REST API и HTTP
REST (Representational State Transfer) е архитектурен стил, построен изцяло върху HTTP. Ето как HTTP методите се свързват с CRUD операциите:
| HTTP метод | CRUD операция | Пример |
|---|---|---|
| GET | Read (Четене) | GET /users/123 |
| POST | Create (Създаване) | POST /users |
| PUT/PATCH | Update (Обновяване) | PUT /users/123 |
| DELETE | Delete (Изтриване) | DELETE /users/123 |
Инструменти за тестване на HTTP
- curl – инструмент за командния ред;
- Postman – графичен клиент за API тестване;
- Browser DevTools – вграден в браузъра, таб „Network“;
- httpie – user-friendly curl алтернатива.
Пример с curl
# GET заявка
curl -X GET https://api.example.com/users
# POST заявка с JSON тяло
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Иван", "email": "ivan@example.com"}'
Често поставяни въпроси (FAQ)
Какво е URL и как се свързва с HTTP?
URL (Uniform Resource Locator) е адресът на ресурса. HTTP е протоколът, по който се достига до него. В https://www.example.com/page, https е протоколът, а останалото е URL.
Какво е кеширане в HTTP?
Кешът позволява браузъра (или proxy сървър) да запази копие на ресурса и да не го изтегля всеки път. Управлява се чрез хедъри като Cache-Control и ETag.
Какво е CORS?
(Cross-Origin Resource Sharing) е механизъм, по който сървърите указват кои домейни могат да правят заявки към тях. Управлява се чрез хедъра Access-Control-Allow-Origin.
Какъв порт използва HTTP?
HTTP използва порт 80 по подразбиране, а HTTPS – порт 443.
Какво означава, че HTTP е stateless протокол?
HTTP е stateless, което означава, че всяка заявка се обработва независимо от предишните.
Сървърът не запазва информация за предишни заявки на клиента.
За да се поддържа „състояние“ между заявките, се използват механизми като:
– cookies;
– sessions;
– tokens.
Каква е разликата между HTTP и HTTPS?
HTTP е протокол за обмен на данни между браузър и сървър, но комуникацията не е криптирана.
HTTPS е защитена версия на HTTP, която използва TLS криптиране, за да защити информацията между клиента и сървъра.
Днес почти всички сайтове използват HTTPS, защото той защитава данните на потребителите и е фактор за класиране в търсачките.
Какво представлява HTTP заявката?
HTTP заявката е съобщение, което браузърът изпраща до сървъра, за да поиска определен ресурс, например HTML страница, изображение или API данни.
Тя съдържа няколко основни елемента:
– метод (GET, POST и др.);
– URL или URI на ресурса;
– HTTP версия;
– хедъри;
– тяло (при POST заявки).
Какво означават HTTP статус кодовете?
HTTP статус кодовете са трицифрени числа, които сървърът връща, за да покаже резултата от заявката.
Най-често срещаните са:
– 200 OK – заявката е успешна;
– 301 Moved Permanently – постоянно пренасочване (redirect);
– 404 Not Found – ресурсът не съществува;
– 500 Internal Server Error – грешка на сървъра.
Те са важни както за разработчиците, така и за SEO.
Кои са най-използваните HTTP методи?
HTTP дефинира различни методи за работа с ресурси.
Най-често използваните са:
GET – получаване на ресурс;
POST – изпращане на данни към сървъра;
PUT – замяна на ресурс;
PATCH – частична промяна на ресурс;
DELETE – изтриване на ресурс.
Тези методи се използват широко в REST API архитектурата.
Заключение
HTTP е фундаментален градивен блок на интернет. Разбиране на това как работи HTTP е задължително за всеки уеб разработчик, DevOps инженер или дигитален специалист. Протоколът непрекъснато се развива: от HTTP/1.1 до HTTP/3, за да отговори на нуждите на съвременния уеб.
Ако искаш да задълбочиш знанията си, следващата стъпка е да разгледаш как работят REST API-та, как се имплементира удостоверяване с HTTP хедъри и как да използваш DevTools в браузъра, за да анализираш реални HTTP заявки.
HTTP е ключова част от начина, по който работи уебът.
След като браузърът изпрати HTTP заявка и получи HTML документа, започва следващият етап – парсването на HTML и създаването на DOM.
Ако искаш да разбереш как браузърът превръща HTML в реална уеб страница, прочети следващата статия от серията: Как браузърите парсват HTML (и какво означава това за SEO)



