Kodokon kodokon.com

HTTP как на ладони: методы и коды статуса

Прочитай настоящий запрос и настоящий ответ и узнай, что на самом деле значат 200, 404 и 500.

8 мин · 3 вопросов

Открыть этот урок в Kodokon

HTTP (HyperText Transfer Protocol) - это язык, на котором браузер и сервер разговаривают друг с другом. Хорошая новость: это не непонятный двоичный код, а читаемый текст. Запрос умещается в несколько строк: глагол, адрес, а затем заголовки, которые уточняют контекст (какой язык я предпочитаю, каким браузером пользуюсь). Ответ устроен так же: числовой код, заголовки, пустая строка, а после неё содержимое.

BASH
curl -i https://example.com

HTTP/2 200
content-type: text/html; charset=UTF-8
content-length: 1256
cache-control: max-age=86400

<!doctype html>
<html>
...
Опция -i заставляет curl выводить ещё и заголовки ответа, а не только содержимое.

Глагол в начале запроса называется методом и объявляет твоё намерение. GET просто просит прочитать ресурс: именно это делает браузер каждый раз, когда ты открываешь страницу. POST отправляет данные на сервер, обычно когда ты подтверждаешь форму регистрации. PUT обновляет уже существующий элемент, а DELETE просит его удалить. Запомни прежде всего первые два: на них приходится подавляющая часть всего трафика.

BASH
curl -X POST -d "name=Sarah&age=30" https://httpbin.org/post
Запрос POST: опция -d передаёт отправляемые данные, ровно как это сделала бы форма.

Каждый ответ начинается с трёхзначного кода статуса. Уже по одной первой цифре понятно, что происходит. Коды из группы 2xx означают успех: 200 говорит "вот то, что ты просил". Коды 3xx - это перенаправления: 301 значит "страница переехала, иди туда". Коды 4xx указывают на ошибку на стороне клиента: 404 (ресурс не найден), 403 (доступ запрещён), 401 (нужно войти в аккаунт). Коды 5xx указывают на сбой на стороне сервера: 500 - классическая внутренняя ошибка.

BASH
curl -I https://example.com/this-page-does-not-exist

HTTP/2 404
content-type: text/html; charset=UTF-8
Опция -I (заглавная i) запрашивает только заголовки: идеально, чтобы проверить код статуса.

Проверка знаний

Убедись, что запомнил ключевые моменты этого урока.

  1. Что означает код статуса 404?
    • Сервер упал
    • Запрошенный ресурс по этому адресу не найден
    • Запрос выполнен успешно
  2. Какое семейство кодов сигнализирует о проблеме на стороне сервера?
    • Коды 2xx
    • Коды 3xx
    • Коды 4xx
    • Коды 5xx
  3. Каким методом HTTP браузер пользуется, чтобы просто прочитать страницу?
    • GET
    • POST
    • DELETE