HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐

рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рди рдХреЗрд╡рд▓ рдЖрд░рдПрдлрд╕реА 2616 рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, HTTP рд╕рдВрджреЗрд╢ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЛ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: "рдПрдХ рдШрдВрдЯреЗ рдЦреЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдлрд┐рд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдореЗрдВ рдЙрдбрд╝рд╛рди рднрд░реЗрдВ" рдФрд░ "рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ, рдФрд░ рдореИрдВ рдЖрд░рд╛рдо рдХрд░реВрдВрдЧрд╛" ред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп: рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдФрд░ рдПрдХ HTTP рдкрд╛рд░реНрд╕рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг 1.1 RFC 2616 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рджреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдХрдерд╛ рдФрд░ BNF рдирд┐рдпрдо рдЬреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмреАрдПрдирдПрдл рдирд┐рдпрдо рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рдмрд╛рдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрд░рдПрдлрд╕реА 5234 рднреА рд╣реИ, рдЬрд╣рд╛рдВ рдмреАрдПрдирдПрдл рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмреАрдПрдирдПрдл рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред RFC 5234 рдЬрд╛рд░реА рдХреА рдЧрдИ рд╕рдЪреНрдЪрд╛рдИ рдмрд╛рдж рдореЗрдВ RFC 2616 (HTTP) рд╕реЗ рдЕрдзрд┐рдХ рдереА, рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдЫреЛрдЯреЗ рдЕрдВрддрд░ рд╣реИрдВред

BNF рд▓рдШреБ рдпрд╛рддреНрд░рд╛

BNF рд╡реНрдпрд╛рдХрд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ)ред
start-line = Request-Line | Status-Line generic-message = start-line *(message-header CRLF) CRLF [ message-body ] 

рдпрджрд┐ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ:
1) рд╕реНрдЯрд╛рд░реНрдЯ-рд▓рд╛рдЗрди рдПрдХ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ-рд▓рд╛рдЗрди рдпрд╛ рд╕реНрдЯреЗрдЯрд╕-рд▓рд╛рдЗрди рд╣реИ (рдпреЗ рднреА рдРрд╕реЗ рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ рдХрд╣реАрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ)
2) рдЬреЗрдиреЗрд░рд┐рдХ-рдореИрд╕реЗрдЬ рд╕реНрдЯрд╛рд░реНрдЯ-рд▓рд╛рдЗрди, * (рдореИрд╕реЗрдЬ-рд╣реЗрдбрд░ CRLF), CRLF рдФрд░ рд╕рдВрднрд╡рддрдГ рдореИрд╕реЗрдЬ-рдмреЙрдбреА ([...] рдмреНрд░реИрдХреЗрдЯреНрд╕ рд╡реИрдХрд▓реНрдкрд┐рдХрддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИред рдЬрд╣рд╛рдБ * (рдореИрд╕реЗрдЬ-рд╣реИрдбрд░ CRLF) рджреЛ рд╕рдВрджреЗрд╢-рд╣реЗрдбрд░ рдФрд░ CRLF рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рдВрдШрдЯрди рдХреЗ 0 рдпрд╛ рдЕрдзрд┐рдХ рджреЛрд╣рд░рд╛рд╡ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирд┐рдпрдорд┐рдд рднрд╛рд╡реЛрдВ рдХреА рддрд░рд╣ рдХреБрдЫ, рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

рдЧрд▓рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рдореИрдВрдиреЗ рдХрдИ рдирд┐рдпрдо рджрд┐рдП рд╣реИрдВред рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рддреНрд╡рд░рд┐рдд рд░рди, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз-рд░реЗрдЦрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕реАрдЖрд░рдПрд▓рдПрдл рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╣реЗрдбрд░ (рд╣реЗрдбрд░) рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдПред рд╣реЗрдбрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдмреАрдЪ, рдЗрдХрд╛рдИ-рд╣реЗрдбрд░ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп-рд╣реЗрдбрд░ рдФрд░ рдЕрдиреБрд░реЛрдз-рд╣реЗрдбрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рд╣реЗрдбрд░ рдирд┐рдпрдо рдЧреИрд░-рдорд╛рдирдХ рд╣реЗрдбрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝рдХрд░ рд╕реЙрд▓рд┐рд╕рд┐рдЯ рдХрд░рддрд╛ рд╣реИ
 My-Header: I am server 
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдиреБрд░реЛрдз рдорд╛рдиреНрдп рд░рд╣реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдирд┐рдпрдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рд╣реЗрдбрд░ рдХрд┐рд╕реА рднреА рд╣реЗрдбрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ рд╡рд╛рд▓реЗ (рд╕реЗ, рд╕реНрд╡реАрдХрд╛рд░, рд╣реЛрд╕реНрдЯ, рд░реЗрдлрд░, рдЖрджрд┐) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рдпрджрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдПрдХ рдЕрдорд╛рдиреНрдп рдорд╛рдирдХ рд╣реЗрдбрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди -рдпрд╛рдбрд░ рд╣реИрдбрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред
 Request = Request-Line ; Section 5.1 *(( general-header ; Section 4.5 | request-header ; Section 5.3 | entity-header ) CRLF) ; Section 7.1 CRLF [ message-body ] ; Section 4.3 entity-header = Allow ; Section 14.7 | Content-Encoding ; Section 14.11 | Content-Language ; Section 14.12 | Content-Length ; Section 14.13 | Content-Location ; Section 14.14 | Content-MD5 ; Section 14.15 | Content-Range ; Section 14.16 | Content-Type ; Section 14.17 | Expires ; Section 14.21 | Last-Modified ; Section 14.29 | extension-header extension-header = message-header message-header = field-name ":" [ field-value ] field-name = token field-value = *( field-content | LWS ) field-content = <the OCTETs making up the field-value and consisting of either *TEXT or combinations of token, separators, and quoted-string> 

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмреАрдПрдирдПрдл рдореЗрдВ "рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рд╕рд╣рд┐рдд рдХреБрдЫ" рдЬреИрд╕реЗ рдирд┐рдпрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ, рдРрд╕реЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 ctext = <any TEXT excluding "(" and ")"> qdtext = <any TEXT except <">> 

рд╕рд╣реА рдлрд╝реАрд▓реНрдб-рдирд╛рдо рдирд┐рдпрдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
 field-name = <any token excluding "Accept", "Allow", ... all header names from rfc 2616, 2617 ...> 


рдореБрдЦреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдореИрдВ рдмреАрдПрдирдПрдл рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреАрдХреЗрдП рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣реЗрдбрд▓рд╛рдЗрди рдХреЛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реА рдмрд╛рд░ рдЯреВрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

UPD : рдЬреЗрдВрдЯрд▓рдореИрди рдорд╛рдЗрдирд░реНрд╕, рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░реЗрдВред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ, рддреЛ рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ред

Source: https://habr.com/ru/post/In153037/


All Articles