объбд | упдетцбойе | чретед

4 HTTP уппвэеойе (HTTP Message).

4.1 Фйрщ уппвэеойк.

HTTP уппвэеойс демсфус об ъбртпущ лмйеофб уетчетх й пфчефщ уетчетб лмйеофх.

          HTTP-message   = Request | Response    ; уппвэеойс HTTP/1.1

Уппвэеойс ъбртпуб (тбъдем 5) й пфчефб (тбъдем 6) йурпмшъхаф пвпвэеоощк жптнбф уппвэеойс RFC 822 [9] дмс ретеущмлй пв®елфпч (рпмеъопк обзтхълй уппвэеойс). Пвб фйрб уппвэеойк чщзмсдсф умедхаэйн пвтбъпн: уобюбмб йдеф обюбмшобс уфтплб (start-line), ъбфен пдйо ймй оеулпмшлп рпмек ъбзпмпчлб (объщчбенщи фблце ртпуфп "ъбзпмпчлй"), ъбфен рхуфбс уфтплб (фп еуфш уфтплб, тбчобс CRLF), хлбъщчбаэбс лпоег рпмек ъбзпмпчлб, б ъбфен, чпънпцоп, фемп уппвэеойс.

           generic-message = start-line
                             *message-header
                             CRLF
                             [ message-body ]

           start-line      = Request-Line | Status-Line

Ч йофетеуби пыйвлпхуфпкюйчпуфй, уетчетбн УМЕДХЕФ йзоптйтпчбфш чуе рхуфще уфтплй, рпмхюеооще ретед уфтплпк ъбртпуб (Request-Line). Дтхзйнй умпчбнй, еумй уетчет юйфбеф рпфпл ртпфплпмб й ч убнпн обюбме уппвэеойс рпмхюбеф CRLF, фп енх умедхеф ьфпф CRLF йзоптйтпчбфш.

Пвтбфйфе чойнбойе: оелпфптще пыйвпюоще тебмйъбгйй HTTP/1.0 лмйеофпч зеоетйтхаф дпрпмойфемшоще CRLF рпуме ъбртпуб POST. Уфпйф чопчш рпчфптйфш, юфп ьфп счоп ъбртеэеоп оптнбмшопк ъбрйуша Велхуб-Обхтб. HTTP/1.1 лмйеоф ое дпмцео дпвбчмсфш дпрпмойфемшоще CRLF ретед ъбртпупн й рпуме оезп.

4.2 Ъбзпмпчлй уппвэеойк.

Рпмс ъбзпмпчлпч HTTP, лпфптще члмаюбаф рпмс пвэйи ъбзпмпчлпч (general-header) (тбъдем 4.5), ъбзпмпчлпч ъбртпуб (request-header) (тбъдем 5.3), ъбзпмпчлпч пфчефб (response-header) (тбъдем 6.2), й ъбзпмпчлпч пв®елфб (entity-header) (тбъдем 7.1), йнеаф фблпк це пвпвэеоощк жптнбф, юфп прйубо ч тбъдеме 3.1 RFC 822 [9]. Лбцдпе рпме ъбзпмпчлб упуфпйф йъ йнеой, дчпефпюйс (":") й ъобюеойс рпмс. Йнеоб рпмек ое юхчуфчйфемшощ л тезйуфтх. Ъобюеойа рпмс нпцеф ртедыеуфчпчбфш мавпе юйумп LWS, ипфс ртедрпюфйфемео пдйопюощк SP. Рпмс ъбзпмпчлб нпзхф ъбойнбфш оеулпмшлп уфтпл. Ртй ьфпн лбцдбс умедхаэбс уфтплб обюйобефус рп лтбкоек нете пдойн SP ймй HT. Ртймпцеойсн УМЕДХЕФ ртйдетцйчбфшус "пвэек жптнщ" ("common form") ртй зеоетбгйй HTTP лпоуфтхлгйк, фбл лбл нпзхф ухэеуфчпчбфш тебмйъбгйй, лпфптще ое ч упуфпсойй ртйойнбфш юфп-мйвп лтпне пвэйи жптн.

          message-header = field-name ":" [ field-value ] CRLF

          field-name     = token
          field-value    = *( field-content | LWS )

          field-content  = <плфефщ, упуфбчмсаэйе ъобюеойе рпмс й
                            упуфпсэйе ймй йъ *TEXT ймй йъ лпнвйобгйк
                            мелуен, tspecials, й quoted-string>

Рптсдпл, ч лпфптпн рпмхюеощ рпмс ъбзпмпчлб у тбъмйюощнй йнеобнй ое йнееф ъобюеойс. Пдоблп "иптпыбс ртблфйлб" ъблмаюбефус ч фпн, юфп уобюбмб рпущмбафус рпмс пвэйи ъбзпмпчлпч, ъбфен рпмс ъбзпмпчлпч ъбртпуб ймй ъбзпмпчлпч пфчефб, й, облпоег, рпмс ъбзпмпчлпч пв®елфб.

Оеулпмшлп рпмек ъбзпмпчлб у пдйооблпчщнй йнеобнй нпзхф ртйухфуфчпчбфш ч уппвэеойй фпздб, й фпмшлп фпздб, лпздб чуе ъобюеойс рпмек, чипдсэйи ч ъбзпмпчпл, пртедемсаф тбъдемеоощк ъбрсфщнй урйупл [фп еуфш #(value)]. ДПМЦОП вщфш чпънпцоп пв®едйойфш оеулпмшлп фблйи рпмек ъбзпмпчлб ч пдох рбтх "йнс рпмс: ъобюеойе рпмс" (ое йънеоеосс ьфйн уенбофйлх уппвэеойс) ртйупедйосс лбцдпе рпумедхаэее ъобюеойе рпмс л ретчпнх юетеъ ъбрсфще. Рптсдпл, ч лпфптпн рпмхюеощ рпмс у пдйоблпчщнй йнеобнй, йнееф ъобюеойе дмс йофетртефбгйй пв®едйоеоопзп ъобюеойс рпмс, й, умедпчбфемшоп, ртплуй-уетчет ОЕ ДПМЦЕО йънеосфш рптсдпл ъобюеойк ьфпзп рпмс ртй ретеущмле.

4.3 Фемп cппвэеойс.

Фемп HTTP уппвэеойс (message-body), еумй поп ртйухфуфчхеф, йурпмшъхефус дмс ретедбюй фемб пв®елфб, учсъбоопзп у ъбртпупн ймй пфчефпн. Фемп уппвэеойс (message-body) пфмйюбефус пф фемб пв®елфб (entity-body) фпмшлп ч фпн умхюбе, лпздб ртйнеосефус лпдйтпчбойе ретедбюй, юфп хлбъщчбефус рпмен ъбзпмпчлб Transfer-Encoding (тбъдем 14.40).

          message-body = entity-body
                       | <entity-body ъблпдйтпчбооп упзмбуоп
                          Transfer-Encoding>

Рпме Transfer-Encoding ДПМЦОП йурпмшъпчбфшус дмс хлбъбойс мавпзп лпдйтпчбойс ретедбюй, ртйнеоеоопзп ртймпцеойен ч гемси збтбофйтпчбойс веъпрбуопк й ртбчймшопк ретедбюй уппвэеойс. Рпме Transfer-Encoding - ьфп учпкуфчп уппвэеойс, б ое пв®елфб, й, фблйн пвтбъпн, нпцеф вщфш дпвбчмеоп ймй хдбмеоп мавщн ртймпцеойен ч герпюле ъбртпупч/пфчефпч.

Ртбчймб, хуфбобчмйчбаэйе дпрхуфйнпуфш фемб уппвэеойс ч уппвэеойй, пфмйюощ дмс ъбртпупч й пфчефпч.

Ртйухфуфчйе фемб уппвэеойс ч ъбртпуе пфнеюбефус дпвбчмеойен л ъбзпмпчлбн ъбртпуб рпмс ъбзпмпчлб Content-Length ймй Transfer-Encoding. Фемп уппвэеойс (message-body) НПЦЕФ вщфш дпвбчмеоп ч ъбртпу фпмшлп лпздб нефпд ъбртпуб дпрхулбеф фемп пв®елфб (entity-body) (тбъдем 5.1.1).

Члмаюбефус ймй ое члмаюбефус фемп уппвэеойс (message-body) ч уппвэеойе пфчефб ъбчйуйф лбл пф нефпдб ъбртпуб, фбл й пф лпдб упуфпсойс пфчефб (тбъдем 6.1.1). Чуе пфчефщ об ъбртпу у нефпдпн HEAD ОЕ ДПМЦОЩ члмаюбфш фемп уппвэеойс (message-body), дбце еумй ртйухфуфчхаф рпмс ъбзпмпчлб пв®елфб (entity-header), ъбуфбчмсаэйе рпчетйфш ч ртйухфуфчйе пв®елфб. Ойлблйе пфчефщ у лпдбнй упуфпсойс 1xx (Йожптнбгйпооще), 204 (Оеф упдетцйнпзп, No Content), й 304 (Ое нпдйжйгйтпчбо, Not Modified) ОЕ ДПМЦОЩ упдетцбфш фемб уппвэеойс (message-body). Чуе дтхзйе пфчефщ упдетцбф фемп уппвэеойс, дбце еумй поп йнееф охмечха дмйох.

4.4 Дмйоб уппвэеойс.

Лпздб фемп уппвэеойс (message-body) ртйухфуфчхеф ч уппвэеойй, дмйоб ьфпзп фемб пртедемсефус пдойн йъ умедхаэйи нефпдпч (ч рптсдле уфбтыйоуфчб):

  1. Мавпе уппвэеойе пфчефб, лпфптпе ОЕ ДПМЦОП члмаюбфш фемп уппвэеойс (message-body) (обртйнет пфчефщ у лпдбнй упуфпсойс 1xx, 204, 304 й чуе пфчефщ об ъбртпу HEAD) чуездб ъбчетыбефус рхуфпк уфтплпк рпуме рпмек ъбзпмпчлб, оеъбчйуйнп пф рпмек ъбзпмпчлб пв®елфб (entity-header fields), ртедуфбчмеоощи ч уппвэеойй.
  2. Еумй рпме ъбзпмпчлб Transfer-Encoding (тбъдем 14.40) ртйухфуфчхеф й хлбъщчбеф об ртйнеоеойе лпдйтпчбойс ретедбюй "chunked", фп дмйоб пртедемсефус лпдйтпчбойен рп лхулбн (chunked encoding) (тбъдем 3.6).
  3. Еумй рпме ъбзпмпчлб Content-Length (тбъдем 14.14) ртйухфуфчхеф, фп езп ъобюеойе ртедуфбчмсеф дмйох фемб уппвэеойс (message-body) ч вбкфби.
  4. Еумй уппвэеойе йурпмшъхеф недйб фйр "multipart/byteranges", лпфптщк убнптбъзтбойюео, фп по й пртедемсеф дмйох. Ьфпф недйб фйр ОЕ ДПМЦЕО йурпмшъпчбфшус, еумй пфртбчйфемш ое ъобеф, юфп рпмхюбфемш нпцеф езп пвтбвпфбфш; ртйухфуфчйе ч ъбртпуе ъбзпмпчлб Range у оеулпмшлйнй урегйжйлбфптбнй дйбрбъпопч вбкфпч (byte-range) рпдтбъхнечбеф, юфп лмйеоф нпцеф бобмйъйтпчбфш multipart/byteranges пфчефщ.
  5. Дмйоб пртедемсефус ъблтщфйен упедйоеойс уетчетпн. (Ъблтщфйе упедйоеойс ое нпцеф йурпмшъпчбфшус дмс хлбъбойс лпогб фемб ъбртпуб, фбл лбл ч ьфпн умхюбе х уетчетб ое пуфбефус ойлблпк чпънпцопуфй рпумбфш пвтбфоп пфчеф).

Дмс упчнеуфйнпуфй у HTTP/1.0 ртймпцеойснй HTTP/1.1 ъбртпущ, упдетцбэйе фемп уппвэеойс (message-body) ДПМЦОЩ члмаюбфш дпрхуфйнпе рпме ъбзпмпчлб Content-Length, еумй ое йъчеуфоп, юфп уетчет счмсефус HTTP/1.1 упчнеуфйнщн. Еумй ъбртпу упдетцйф фемп уппвэеойс (message-body), й Content-Length ое хлбъбоп, уетчетх УМЕДХЕФ рпумбфш пфчеф у лпдпн упуфпсойс 400 (Йурптюеоощк Ъбртпу, Bad Request), еумй по ое нпцеф пртедемйфш дмйох уппвэеойс, ймй у лпдпн упуфпсойс 411 (Фтевхефус дмйоб, Length Required), еумй по обуфбйчбеф об рпмхюеойй Content-Length.

Чуе HTTP/1.1 ртймпцеойс, лпфптще рпмхюбаф пв®елфщ, ДПМЦОЩ рпойнбфш лпдйтпчбойе ретедбюй фйрб "chunked" (тбъдем 3.6), фблйн пвтбъпн тбътеыбефус йурпмшъпчбойе дбоопзп неибойънб дмс фблйи уппвэеойк, дмйоб лпфптщи ое нпцеф вщфш пртедемеоб ъбтбоее.

Уппвэеойс ОЕ ДПМЦОЩ пдопчтенеооп члмаюбфш й рпме ъбзпмпчлб Content-Length й ртйнеосфш лпдйтпчбойе ретедбюй фйрб "chunked". Еумй рпуфхрймп уппвэеойе у рпмен Content-Length й ъблпдйтпчбоопе у ртйнеоеойен лпдйтпчбойс ретедбюй "chunked", фп рпме Content-Length ДПМЦОП йзоптйтпчбфшус.

Еумй рпме Content-Length ртйухфуфчхеф ч уппвэеойй, лпфптпе дпрхулбеф обмйюйе фемб уппвэеойс (message-body), фп ъобюеойе рпмс ДПМЦОП фпюоп уппфчефуфчпчбфш юйумх плфефпч ч феме уппвэеойс. HTTP/1.1 бзеофщ рпмшъпчбфемс ДПМЦОЩ йожптнйтпчбфш рпмшъпчбфемс ч умхюбе рпмхюеойс й пвобтхцеойс оедпрхуфйнпк дмйощ.

4.5 Пвэйе рпмс ъбзпмпчлб.

Йнеефус оеулпмшлп рпмек ъбзпмпчлб, лпфптще ртйнеосафус лбл дмс уппвэеойк ъбртпупч, фбл й дмс уппвэеойк пфчефпч, оп лпфптще ое ртйнеосафус л ретедбчбенпнх пв®елфх. Ьфй рпмс ъбзпмпчлб ртйнеосафус фпмшлп л ретедбчбенпнх уппвэеойа.

          general-header = Cache-Control            ; Тбъдем 14.9
                         | Connection               ; Тбъдем 14.10
                         | Date                     ; Тбъдем 14.19
                         | Pragma                   ; Тбъдем 14.32
                         | Transfer-Encoding        ; Тбъдем 14.40
                         | Upgrade                  ; Тбъдем 14.41
                         | Via                      ; Тбъдем 14.44

Йнеоб пвэйи рпмек ъбзпмпчлб (general-header fields) нпзхф вщфш обдецоп тбуыйтеощ фпмшлп ч упюефбойй у йънеоеойен четуйй ртпфплпмб. Пдоблп, опчще ймй ьлуретйнеофбмшоще рпмс ъбзпмпчлб нпзхф рпмхюйфш уенбофйлх пвэйи рпмек ъбзпмпчлб (general-header fields), еумй чуе уфптпощ упедйоеойс тбурпъобаф йи лбл пвэйе рпмс ъбзпмпчлб. Оетбурпъобооще рпмс ъбзпмпчлб пвтбвбфщчбафус лбл рпмс ъбзпмпчлб пв®елфб (entity-header).


Copyright  ©  1998 Alex Simonoff (http://www.omsk.com/Leshik/), All Rights Reserved.


объбд | упдетцбойе | чретед