HTTP Flashcards
Что такое HTTP?
HTTP - это протокол передачи гипертекста (HyperText Transfer Protocol).
Протокол, обмен данными по которому происходит в формате запрос-ответ.
Для идентификации ресурсов используется идентификатор URI (Unified Resource Identifier) в заголовке запроса.
Для указания параметров ответа возможно использование заголовков.
HTTP не сохраняет состояния. Такое сохранение состояний должно реализовываться на клиентской или серверной стороне, например, с помощью заголовка SetCookie.
HTTP устанавливает TCP-соединение на каждый запрос.
Какова структура HTTP?
Запрос состоит из стартовой строки, заголовков и тела сообщения.
Стартовая строка: <метод> <URI> HTTP/<версия>
. Например, GET /wiki/page/1 HTTP/1.1
Ответ: HTTP/<версия> <код> <пояснение>
. Например, HTTP/1.1 200 OK
.
Какие известны методы HTTP?
Какие заголовки можно использовать для обхода кешированного ответа?
В случае применения неизвестного сервером метода, его ответ будет содержать строку 501 Not Implemented
.
В случае отсутствия обработчика метода на сервере, его ответ будет содержать строку 405 Method Not
.
Общепринятые методы:
1. OPTIONS
применяется для определения возможностей сервиса. В ответе должны прийти заголовки Allow
и Access-Control-Allow-
, которые позволят определить доступность ресурса для методов, хедеров, источников и временных рамок. Тело запроса отсутствует. Ответ не кешируется.
2. GET
применяется для запроса содержимого ресурса. Параметры принято передавать через ?param=value
. Отсутствует тело запроса. Ответ является идемпоентным, возможно кешировать.
3. HEAD
применяется для определения заголовков ресурса перед запросом GET
, например, в случае получения большого объема данных.
4. POST
применяется для передачи даных в теле запроса. Ответ содержит строку 200 OK
или 201 Created
в результате обработки. Ответ не кешируется.
5. PUT
применяется для загрузки содержимого в теле запроса на ресурс. Ответ не кешируется.
6. PATCH
применяется для изменения фрагмента ресурса.
7. DELETE
применяется для удаления ресурса.
8. TRACE
применяется для отслеживания изменений запроса через Proxy.
Какие известны коды состояния HTTP?
Коды состояния можно поделить на группы:1xx
- информационные2xx
- успешная операция3xx
- перенаправление4xx
- ошибка на клиенте
~~~
400 Bad Request
401 Unauthorized
404 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timeout
~~~5xx
- ошибка на сервере
~~~
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
~~~
Что такое заголовки HTTP?
Заголовки являются частью запроса и несут служебную информацию, а также данные, необходимые для обработки запроса и формирования правильного ответа сервером.
Например:
~~~
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?
Заголовки делятся на 4 группы:
1. Основные. Например, Cache-Control
.
2. Заголовки запроса. Например. Accept
, Referer
, User-Agent
.
3. Заголовки ответа. Например: Age
, ETag
, Location
.
4. Сущность. Например: Allow
, Content-Language
, Expires
.
Что такое тело запроса?
Тело запроса содержит информацию для обработки сервисом или сущность для сохранения.
Тело должно соответствовать заголовкам Content-Type и Content-Length.
Как работает отправка и получение множественных данных?
Как происходит возобновление загрузки?