Files
obsidian/Веб/Сеть и API/HTTP.md
T
roma-dxunvrs 4fabe16272 04.09
2026-09-04 22:55:43 +03:00

5.0 KiB

  • HTTP (Hypertext Transfer Protocol) - нужен для передачи Гипертекст между клиентом и сервером.
  • HTTP - протокол прикладного уровня (по модели TCP-IP)
  • Основа - технология "клиент-сервер"
  • Может быть использован в качестве транспорта для других протоколов
  • Основной объект манипуляции - ресурс, на который указывает URI
  • Обмен сообщениями по схеме "запрос-ответ"
  • Stateless - без сохранения состояния
  • Для реализации сессий - cookies

Структура запроса

  • Стартовая строка:
Метод URI HTTP/Версия
GET /spip.html HTTP/1.1
  • Заголовки:
Host: se.ifmo.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; 
rv:1.9b5) Gecko/2008050509 Firefox/3.6
Accept: text/html
Connection: close
  • Тело сообщения

Структура ответа

  • Стартовая строка:
HTTP/Версия КодСостояния Пояснение
HTTP/1.1 200 Ok
  • Заголовки:
Server: Apache/2.2.11 (Win32) PHP/5.3.0
Last-Modified: Sat, 16 Jan 2010 21:16:42 GMT
Content-Type: text/plain; charset=windows-1251
Content-Language: ru
  • Тело сообщения

Методы HTTP

  • OPTIONS - определение возможностей сервера
  • GET - запрос содержимого ресурса (в теле запроса лучше ничего не писать - нарушение спецификации и проблемы)
  • HEAD - аналог GET, но в ответе отсутсвует тело
  • POST - передача данных ресурсу (создание нового чаще всего)
  • PUT - загрузка содержимого ресурса на указанный URI (заменяет или создает)
  • PATCH - вносит частичные изменения в уже существующий ресурс
  • DELETE - удаляет указанный ресурс на сервер
  • QUERY (новый, июнь 2026 года) - безопасный запрос данных с передачей параметров в теле (для сложных фильтров и поиска)

Коды состояния

Состоят из трех цифр Первая - класс состояния: - "1" - Informational - информационный - "2" - Success - успешно - "3" - Redirection - перенаправление - "4" - Client error - ошибка клиента - "5" - Ошибка сервера Самые важные:

  • 2xx - успех
    • 200 OK - запрос выполнен успешно, данные возвращены
    • 201 Created - ресурс успешно создан (ответ на POST)
    • 204 No Content - все прошло успешно, тело ответа - пустое
  • 3xx - редирект
    • 301 Moves Permamently - ресурс навсегда переехал на новый URI#URL
    • 302 Found - ресурс временно переехал на другой URL
  • 4xx - ошибки клиента
    • 400 Bad Reques - сервер не понял запрос
    • 401 Unauthorized - требуется вход в систему
    • 403 Forbidden - вход выполнен, но у клиента нет прав доступа к этому ресурсу
    • 404 Not Found - запрашиваемый ресурс не найден на сервере
    • 429 Too Many Requests - клиент превысил лимит запросов
  • 5xx - ошибки сервера
    • 500 Internal Server Error - любая непредвиденная ошибка на бэкенде
    • 502 Bad Gateway - прокси-сервер не получил ответ от бэкенда
    • 504 Gateway Timeout - бэкенд отвечал слишком долго, время ожидания истекло

Заголовки HTPP

Формат: ключ: значение 4 группы:

  1. General Headers - могут включаться в любое сообщение клиента и сервера. Пример - Cache-Control
  2. Request Headers - используются только в запросах клиента. Пример - Referer
  3. Response Headers - используются только в запросах сервера. Пример - Allow
  4. Entity Headers - сопровождают любую сущность сообщения. Пример - Content-Language Если непредназначенный заголовок попадет не туда, то вероятнее всего, ничего критичного не будет, и бэкенд/прокси/браузер либо пропустит его, либо просто не отправит