Font size
WorksheetsHTTP, fetch
Total questions: 12
Worksheet time: 7mins
HTTP является прикладным протоколом для передачи данных. Что значит «прикладной» в контексте сетевой модели OSI?
он находится под транспортными протоколами на модели OSI, и они используют его для передачи данных
он работает на самом верхнем, седьмом уровне модели OSI — прикладном уровне
он может находиться как на транспортном, так и на сетевом уровне модели OSI, в зависимости от использования
он разрабатывался универсально, чтобы можно было применить в любом web-приложении
Кто являются основными участниками обмена данными при использовании протокола HTTP в типичном веб-приложении?
Сетевой маршрутизатор и коммутатор
Клиент (например, браузер пользователя)
DNS-сервер
Сервер (веб-сервер, который обрабатывает запросы и отправляет ответы)
Рассмотрим следующий URL: https://www.example.com:8080/path/to/resource?query=param1&id=5#section. Какие из следующих утверждений о его частях верны?
https — это схема (scheme), указывающая на протокол
8080 — это путь (path) к ресурсу
query=param1&id=5 — это фрагмент (fragment)
www.example.com — это хост (host), определяющий доменное имя сервера
Какие из перечисленных компонентов обязательно присутствуют в первой строке HTTP запроса?
Метод запроса (например, GET, POST)
Status code (например, 200)
Путь к запрашиваемому ресурсу
Версия используемого протокола HTTP (например, HTTP/1.1)
HTTP называют "stateless" (протоколом без сохранения состояния). Что это значит?
Каждый HTTP-запрос обрабатывается сервером независимо от предыдущих запросов от того же клиента
Сервер обрабатывает запросы быстрее, так как не нужно сохранять информацию о каждом клиенте
Через HTTP никогда не передаётся объект состояния приложения
Клиент не хранит никакой информации о сессии между запросами
Как может идентифицироваться клиент, если HTTP - stateless протокол?
с помощью таких механизмов как Кэширование и ETag
с помощью таких механизмов как Cookies и Sessions
с помощью таких механизмов как JSON и Хэш-таблицы
с помощью метода fetch, который поддерживает это "из коробки"
Что означает HTTP статус код 200 OK в ответе сервера?
Запрос содержит синтаксическую ошибку
Запрос успешно обработан, и в теле ответа содержатся запрошенные данные
Запрашиваемый ресурс не найден на сервере
Запрос успешно обработал редирект, приложение может корректно работать дальше
За что отвечает HTTP заголовок Content-Type как в запросах (особенно с телом), так и в ответах?
Он указывает размер тела сообщения в байтах
Он сообщает о медиа-типе (формате) данных, содержащихся в теле сообщения
Он определяет кодировку символов, используемую для тела сообщения
Он указывает, откуда был сделан запрос (Origin)
За что отвечает HTTP заголовок Content-Length?
Он указывает размер тела сообщения в байтах
Он сообщает о типе данных в теле сообщения
Он указывает максимальный размер тела запроса или ответа, который готов принять клиент/сервер
Он сообщает клиенту, как долго он должен кэшировать этот ответ
Проблема CORS (Cross-Origin Resource Sharing) возникает, когда
Клиент пытается запросить ресурс по протоколу HTTP, но сервер поддерживает только HTTPS
Клиент отправляет слишком много запросов к одному серверу за короткий промежуток времени
Веб-страница, загруженная с одного источника (домен, порт, протокол), пытается сделать HTTP-запрос к ресурсу с другого источника
Сервер пытается отправить ответ клиенту, но у клиента нет прав доступа к этому ресурсу
Для чего в современном Frontend-е используется метод fetch?
Для работы с локальным хранилищем браузера (LocalStorage, SessionStorage)
Для выполнения асинхронных HTTP-запросов с клиента на сервер и получения ответов
Для обработки событий пользовательского интерфейса
Для управления состоянием компонентов в JavaScript-фреймворках
Почему методы обработки тела ответа fetch, такие как .json(), .text(), .blob(), возвращают Promise?
fetch возвращает ответ сразу же, когда получены все заголовки; в этот момент тело может быть ещё неизвестно
Сервер отправляет тело ответа уже в виде промиса
Это необходимо для возможности цепочки вызовов .then() (это следствие, а не основная причина)
исторически сложилось, что fetch работает именно так (это "рудимент" старого интернета)
