232 където:
start-line = Request-Line | Status-Line Request Response Request = Request-Line *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ] Response = Status-Line *(( general-header | response-header | entity-header ) CRLF) CRLF [ message-body ] таблица 32 Основни съобщения *rule - повторение. Пълният вариант на формата е
"*element", където
е най-малко, а - най-много. Стойността по подразбиране са 0 и безкрайност, което означава, че:
"*(element)" – липсва или се повтаря определени пъти;
"1*element" – най-малко един път;
"1*2element" – един или два пъти.
Използвани съкращения:
LWS = [CRLF] 1*( SP | HT )
CRLF = CR LF
OCTET = <всяка 8-битова поредица от данни>
CHAR = <всеки US-ASCII символ (octets 0 - 127)>
UPALPHA = < всяка US-ASCII главна буква "A".."Z">
LOALPHA = <всяка US-ASCII малка буква "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <всяка US-ASCII цифра "0".."9">
CTL = <всеки US-ASCII контролен символ (octets 0 - 31) и DEL (127)>
CR =
LF =
SP =
HT =
<"> =
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Дефинираните методи са:
"OPTIONS" – подава заявка за информация относно параметрите за комуникация. Отговорът не се кешира.
"GET" – извлича информацията от указания URI ресурс
"HEAD" – методът е подобен на „GET“, но отговорът не включва тяло на съобщението (message-body), а само метаинформация включена в заглавната част на единицата.
233
"POST" – използва се за достъп до определена самостоятелна единица, подчинена на актуалния URI за изпращане на данни към сървъра.
"PUT" - заменя всички настоящи представяния на целевия ресурс с каченото съдържание
"DELETE" – подава заявка за изтриване на всички представяния за посочения
URI ресурс
"TRACE" – изпраща loop-back съобщение към посочения ресурс
"CONNECT" - създава тунел към сървъра идентифициран от даден URI.
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF Статус кодовете са трицифрени числа с категоризираща първа цифра:
1xx: Informational – получена
заявка и продължаващ процес;
2xx: Success – успешно получаване на действията, разбиране и реализиране;
3xx: Redirection – предприемане на по-нататъшни действия за завършване на заявката;
4xx: Client Error – грешен синтаксис или невъзможно изпълнение;
5xx: Server Error – неизпълнение на заявката от страна на сървъра.
Мessage-header на съобщението включва general-header, request- header, response-header, entity-header. Всяка от тях е във формат:
message-header = field-name ":" [ field-value ]
general-header – съдържа полета, които са общи за двата типа съобщения (заявка и отговор) и се прилагат само към съобщението;
Cache-Control –
включва директиви, които контролират кеширането при UA клиентите, посредниците и оригиналните сървъри;
Connection – характеризира типа на връзката;
Date – съдържа датата и часа на запитването или отговора;
Pragma – посочва директивите, които могат да се приложат за всеки получател по веригата на отговора или заявката;
Trailer – посочва, че дадено множество от полета на хедъра ще бъдат в трейлъра на съобщението, кодирано на парчета за трансфер (големите потоци се разбиват на парчета - chunks);
Transfer-Encoding – посочва използвания метод за трансфер и кодиране на тялото на съобщението;
Upgrade – указва допълнителните протоколи поддържани от клиента и биха могли да се използват за съвместимост със сървъра,
Via – използва се от посредническите устройства (шлюзове и проксита) за проследяване на препращаните съобщения и
използваните протоколи;
Warning – служи за пренос на допълнителна информация относно статуса и трансформацията на съобщението.
234
request-header – пренася допълнителна информация, която не се съдържа в стартовия ред или общия хедър. Полетата са следните:
Accept – специфицира типовете медия, допустими за включване в отговора;
Accept-Charset – определя кодовата таблица на отговора;
Accept-Encoding – указва възможните типове кодиране за съдържанието;
Accept-Language – определя възможните естествени езици за използване;
Authorization – използва се за автентикация на UA;
Expect – специфицира изисквания към сървъра, очаквани от клиента;
From – указва
email адреса на потребителя, който използва и контролира UA агента;
Host – хоста и порта на изисквания ресурс;
If-Match – посочва получените, от по-ранна комуникация с този ресурс, единици, които са актуални към момента;
If-Modified-Since – съдържа датата, след която се проверява за актуализация на изисквания ресурс т.е. за проверка на актуалността на кеша.
If-None-Match – условно задава на сървъра да изпълни искания метод само ако една от изброените стойности в този таг се съдържа в таговете за единици в полето Etag;
If-Range – служи за опресняване на единиците в кеша в зависимост от датата;
If-Unmodified-Since – указва на сървъра да изпълни операцията ако ресурса не е променян от посочената дата;
Max-Forwards - въвежда ограничение за броя на препращанията
през шлюзове и проксита;
Proxy-Authorization – използва се при идентифициране на клиента пред прокси;
Range – определя част от единицата;
Referer – указва на сървъра URI адреса на ресурса от където е получена заявката;
TE – свързано е с указване на кодировката при трансфер;
User-Agent – съдържа информация за агента, който генерира заявката.
response-header – пренасят допълнителна информация, която не се съдържа в стартовия ред или общия хедър.
Accept-Ranges – дефинира частта от ресурса, която трябва да се приеме като отговор;
Age- неотрицателно десетично число, показващо времето в секунди от последното генериране на заявката (при кеширана такава);
ETag – пренася името на тага на единицата (entity tag),
участваща в отговора;
Location – използва се за пренасочване на получателя към ресурс различен от заложеният в заявката;
Proxy-Authenticate – указва схемата и параметрите за автентикация към прокси сървъра. Свързано е с отговор 407 (Proxy Authentication Required);
235
Retry-After – използва се с отговор 503 (Service Unavailable) или 3xx (Redirection) и посочва минималното време на изчакване на потребителския агент преди изпозването на пренасочена връзка. Формат:
Retry-After = "Retry-After" ":" ( HTTP-date | delta-seconds )
Server – задава информация за софтуера на оригиналния сървър, обработващ заявката;
Vary – указва, че единицата има няколко представяния и може да варира спрямо специфичните изисквания на заявката;
WWW-Authenticate – включва се при отговор 401 (Unauthorized) и указва схемата и параметрите за автентикация;
entity-header – съдържа информация за тялото на единицата или ресурса от заявката.
Allow – задава множеството от методи поддържани от ресурса, идентифициращ се с използваното URI;
Content-Encoding – указва използвания тип за пренос;
Content-Language – определя естествения език на аудиторията, за която е
предназначена единицата;
Content-Length – задава размера на тялото на единицата в октети;
Content-Location – задава ресурсното местоположение на единицата;
Content-MD5 – проверка на целостта на съобщението чрез MD5 резюме;
Content-Range – придружава част от съдържанието на единицата и указва неговото местоположение;
Content-Type – специфицира типа медия на тялото;
Expires – показва датата/часа точно преди изтичане на отговора;
Last-Modified – последната дата/час на модифициране на ресурса.
Message-body на съобщението съдържа информацията, която трябва да се покаже в браузъра.
Http схемата, която се използва за достъпване на мрежов ресурс е във вида:
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] Допълнителна информация за протокола може да се получи от документ RFC 2616.
Сподели с приятели: