Технология создания сайтов

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