Структура HTTP-запроса и ответа

Как производится запрос и какие результаты возвращает сервер. Из каких составных частей состоит HTTP-запрос и HTTP-ответ. Какие запросы являются безопасными и с какими нужно быть осторожнее.

  • 00:00:22 Путь запроса и ответа
  • 00:01:19 Пример файлового сервера
  • 00:02:32 Более сложные состояния
  • 00:03:19 Статусное сообщение
  • 00:05:22 Метод запроса GET
  • 00:06:20 Загрузка документа с PUT
  • 00:07:31 Редактирование через PATCH
  • 00:08:37 Удаление методом DELETE
  • 00:09:14 Получение информации c HEAD
  • 00:10:16 Добавление элементов через POST
  • 00:11:07 Трассировка с CONNECT и TRACE
  • 00:11:20 Доступные методы в OPTIONS
  • 00:13:07 Безопасные методы
  • 00:13:39 Идемпотентность методов для сервера
  • 00:15:49 Применение идемпотентности
  • 00:16:46 Общий обзор
  • 00:17:49 Числовой код статуса
  • 00:19:12 Коды успеха
  • 00:19:42 Классификация ошибок
  • 00:21:11 Ошибки клиента
  • 00:21:47 Системные ошибки сервера
  • 00:22:17 Дополнительные статусы
  • 00:24:29 Версия протокола
  • 00:25:47 Ресурсы и идентификаторы
  • 00:26:38 Сайты и доменные имена
  • 00:27:36 Параметры запроса
  • 00:29:16 Постоянные и временные редиректы
  • 00:30:55 Отправка неверного метода
  • 00:31:32 Управление соединением
  • 00:32:55 Заголовки и тело HTTP
Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (23)
Назар

А HTTP/2 протокол работает так же как и HTTP/1.1 или есть какое-то отличие?

Ответить
Дмитрий Елисеев

Различия лишь технические в плане ускорения передачи: конвертация в бинарный формат, мультиплексирование, сжатие заголовков, заблаговременная передача сопутствующего контента. Подробне можно подсмотреть на Habr. А сам контент и заголовки пишутся такие же.

Ответить
Deworker Pro
  • В будущем планируется рассылка о выходе новых видео ? А ещё лучше RSS.
  • Я смог подписаться как "Deworker Pro" :) Надо пофикксить.
Ответить
Deworker Pro
  • Сверху не настоящий Deworker Pro
  • Я настоящий
  • Маркдаун разметка преобразуется в HTML, а потом экранируется :)
Ответить
Deworker Pro

Хорошо бы ещё добавить возможность:

  • Как-то "отмечать" видео. Типа лайк/дизлайк, "поделиться"
  • Добавлять в закладки.
Ответить
Maxim Niko

Лайк / дизлайк - такое себе, а вот время на котором закончил просмотр хорошо бы зафиксировать, если посмотрел не до конца. Когда просмотрел до конца можно ставить галочку "просмотрено" и открывать плейлист сразу с нового не просмотренного видео или давать уведомление, что это видео уже было просмотрено, хотите ли перейти к следующему не просмотренному видео

Ответить
Если файл доступен только для чтения - вернется GET, TRACE. Что значит вернется? Это просто соглашение в рамках которого я(сервер) должен вручную это настроить или это будет возвращаться автоматически для файлов справами только на чтение?

Если файл доступен только для чтения - вернется GET, TRACE. Что значит вернется? Это просто соглашение в рамках которого я (сервер) должен вручную это настроить или это будет возвращаться автоматически для файлов справами только на чтение?

Ответить
Дмитрий Елисеев

Всё программируется вручную.

Ответить
Если файл доступен только для чтения - вернется GET, TRACE. Что значит вернется? Это просто соглашение в рамках которого я(сервер) должен вручную это настроить или это будет возвращаться автоматически для файлов справами только на чтение?

Ну и как мне теперь сменить имя?)))

Ответить
Дмитрий Елисеев

В кабинете в пункте "Комментатор".

Ответить
Sk

В смысле закончатся порты для млн соединений, я этого не понел, если клиент стучится на 80 или 443.Или это имеется ввиду у прокси сервера закончатся порты ( Конец видео keep-alive timeout )

Ответить
Дмитрий Елисеев

В смысле начнут отклоняться новые соединения, если у Apache или Nginx установлен лимит на max connections.

Ответить
Алексей Тимков

Дима, а какое время по дефолту для протокола HTTP/1.1 для использования одного соеденения?

Ответить
Дмитрий Елисеев

Если рассматривать сайты, то зависит от браузера и сервера. У браузеров чаще одна минута. У Nginx тоже 60 секунд. PHP по умолчанию max_execution_time установлено в 30 секунд.

Ответить
Владимир Перепеченко

Спасибо! К сожалению, после просмотра остался непонятным принцип обработки информации, переданной с помощью GET and POST запросов.

Например, мы отправляем из JavaScript post запрос на наш сервер, на котором работают классические nginx\php-fpm. Или же отправляем этот запрос вообще с другого сервера или даже сервиса типа Postman В запросе указываем путь типа /admin/?article=123

Непонятно следующее: как понять, какой php скрипт (файл) на нашем сервере примет этот запрос и сможет вытащить из него данные через $_POST переменную? То есть в каком файле писать обработчик для этих данных?

Как видите,я не понял саму идею :(

Ответить
Дмитрий Елисеев

Запустится файл, запуск которого будет настроен для обработки каждого адреса в файле .htaccess для Apache:

// Если запрашиваемого файла или папки нет, то запустить index.php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

или в conf-файле для Nginx:

// Открываем по умолчанию из любой папки файл index.html

index index.html;

// По любому адресу пытаемся найти файл или папку, а иначе вызываем index.php

location / {
    try_files $uri $uri /index.php?$args;
}

// проксируя запросы к php-файлам в PHP-FPM

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
}

То есть это дело самого сервера.

Ответить
Владимир Перепеченко

То есть это дело самого сервера.

То есть файл обработчика для конкретного запроса определяет сервер + настроенная маршрутизация в index.php

Понятно, спасибо!

Ответить
Владимир Перепеченко

А этот ролик не был перезаписан заново? А то на странице https://deworker.pro/edu некоторые старые ролики стали в сортировке выше.
Вы уж, сообщайте пожалуйста, если изменения существенные и стоит пересматривать. :)

Ответить
Дмитрий Елисеев

Да, ролики перезаписываем. В этой серии изменения мелкие. В основном по стилю слайдов. В первом эпизоде из существенного дополнили часть про DNS.

Ответить
Владимир Перепеченко

Тогда уж со временем сделайте плз дату создания и дату обновления каста/статьи. Технически просто, а сколько вопросов снимает..

Ответить
Спасибо, но так и не понял разницы PUT и POST. Или пример размытый почему не идемпотентен PUT. Чуть разжевать можешь?

Спасибо, но так и не понял разницы PUT и POST. Или пример размытый почему не идемпотентен PUT. Чуть разжевать можешь?

Ответить
Дмитрий Елисеев

Спасибо, но так и не понял разницы PUT и POST.

POST /posts добавляет новый документ в коллекцию.
PUT /posts/27 помещает документ в указанный адрес.

Ответить
Дмитрий Елисеев

Или пример размытый почему не идемпотентен PUT.

PUT как раз идемпотентный, а PATCH не всегда.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Yandex
MailRu
GitHub
Google