Технология создания сайтов
Download
Report
Transcript Технология создания сайтов
HTTP – протокол и CGI
Запросы и ответы
Запрос = Строка-Статус
*(Общий-Заголовок | ЗаголовокЗапроса | Заголовок-Содержания
) CRLF [ Содержание-Запроса ]
Ответ = Строка-Статус *(ОбщийЗаголовок | Заголовок-Ответа |
Заголовок-Содержания) CRLF [
Содержание-Ответа ]
Общий Заголовок
Общий-Заголовок =
Cache-Control:
Connection:
Date:
MIME-Version:
Pragma:
Transfer-Encoding:
Upgrade:
Via:
Заголовок Connection
Значения параметра Connection:
Close
Keep-Alive
Постоянные соединения (Persistent Connections)
Позволяет запрашивать и получать
несколько файлов за одно TCP-соединение
И клиент и сервер могут прервать
соединение. Для того, чтобы известить,
что соединение будет прервано, они могут
послать Close в значении параметра
Connection
Запрос
Строка-Статус = Метод SP URIЗапроса SP Версия-HTTP CRLF
Заголовок-Запроса =
Accept:
Accept-Charset:
Accept-Encoding:
Accept-Language:
Authorization:
Cookie:
From:
Host:
If-Modified-Since:
Max-Forwards:
Pragma:
Proxy-Authorization:
Range:
Referer:
User-Agent:
extension-header
Методы
GET – основной для простых запросов
данные добавляются к адресу
POST – для посылки данных
HEAD – для запроса метаданных
Условный GET – используется If-Modified-Since
Упоминаются:
PUT
LINK
UNLINK
DELETE
Ответ
Строка-Статус = Версия-HTTP SP Статус-Код
SP Фраза-Объяснение
Заголовок-Ответа =
Server:
Accept-Ranges:
Set-Cookie:
Age:
Proxy-Authenticate:
Vary:
Public:
Warning:
Retry-After:
WWW-Authenticate:
extension-header
Ответ
Accept-Ranges служит для передачи файла
по частям (докачки). Значения:
bytes – весь файл
n:m – кусок с байта n длиной m
none – докачка не поддерживается
Retry-After – когда сервер «говорит», что
сервис временно недоступен (503)
Proxy-Authenticate – запрос авторизованного
доступа
Vary – при передаче одной из версий
ресурса. Указываются параметры различия.
Заголовок-Содержания
Заголовок-Содержания =
Allow:
Content-Base:
Content-Encoding:
Content-Language:
Content-Length:
Content-Transfer-Encoding
Content-Type:
Derived-From:
Expires:
Last-Modified:
Link:
Location:
URI:
Статус код
1**
2**
3**
4**
5**
–
–
–
–
–
информация
успешный ответ
редирект
ошибка запроса
ошибка сервера
Статус коды
100 Continue
200 OK
301 Moved Permanently
302 Moved Temporarily
304 Not Modified
401
403
404
405
Unauthorized
Forbidden
Not Found
Method Not Allowed
500 Internal Server Error
503 Service Unavailable
Пример запроса
GET /index.html HTTP/1.0
User-Agent: Mozilla/2.02Gold (WinNT; I)
Accept: image/gif, image/x-xbitmap,
image/jpeg, image/pjpeg, */*
Необязательная часть
Пример ответа
HTTP/1.0 200 OK
Date: Fri, 20 Sep 1996 08:17:58 GMT
Server: NCSA/1.5.2
Last-modified: Mon, 17 Jun 1996 21:53:08 GMT
Content-type: text/html
Content-length: 2482
Cookie
Set-Cookie: name=value;
– минимальная форма
Set-Cookie: name=value; expires=date;
path=pathname; domain=domainname; secure
– полная форма
Пример Cookie
Set-Cookie: username=guest;
expires=Monday, 31-Dec-2007 23:59:59
GMT; path=/; domain=www.isu.ru;
CGI –
Common Gateway Interface
клиент
браузер
сервер
HTMLдокумент
WWW-сервер
CGI-программа
шлюз
База данных
Переменные окружения
AUTH_TYPE
CONTENT_LENGTH
CONTENT_TYPE
DOCUMENT_ROOT
GATEWAY_INTERFACE
HTTP_ACCEPT
HTTP_FROM
HTTP_REFERER
HTTP_USER_AGENT
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_IDENT
REMOTE_USER
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
Переменные окружения
CONTENT_LENGTH – длина данных
запроса
HTTP_COOKIE – cookie
HTTP_REFERER – адрес ссылки
QUERY_STRING – запрос (GET)
REMOTE_ADDR – ip клиента
REMOTE_HOST
REQUEST_METHOD – метод
Заголовки, обрабатываемые
сервером
Примеры:
Content-type
Set-Cookie
Location
Content-type: text/html
«текст»
Content-type: text/html
Set-Cookie: username=guest;
«текст»
Set-Cookie: username=guest;
Location: http://www.isu.ru