Python-Ref > Mimo python > HTTP > Mechanismus HTTP komunikace
 
 

<-^^->
Klíčová slova
Moduly
Knihovní funkce

Mechanismus HTTP komunikace

Co se děje když browser načítá dokument přes HTTP
Klient pošle požadavek (request) serveru v podobě textového řetězce podle pravidel HTTP protokolu - např.
GET / HTTP/1.1
Host: zirael.org

Server pošle zpátky odpověď (response). Ta obsahuje HTTP hlavičku a v některých případech pak samotný dokument. Dokument není obsažen v případě, že server posílá hlášení o chybě apod.
HTTP response může vypadat např. takhle:
HTTP/1.1 200 OK
Date: Tue, 04 Sep 2007 07:40:20 GMT
Server: Apache
Last-Modified: Tue, 29 Mar 2005 15:09:02 GMT
ETag: "30bef-3e8-a707f80"
Accept-Ranges: bytes
Content-Length: 1000
Content-Type: text/html; charset=utf-8

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "dtd/xhtml1-strict.dtd">
<?xml version="1.0" ?>
<html>
  <head>
    <link href="css/style.css" rel="stylesheet" title="normal" type="text/css"/>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<!--    <script src="styleswitcher.js" type="text/javascript"> </script> -->
    <title>-- zirael.org --</title>
  </head>

  <body>
    <h1>zirael.org</h1>
    <p>Welcome to zirael.org. If you are looking for BKchem you can find it <a href="http://bkchem.zirael.org/index.html">here</a>.</p>

    <p class="transparent">
      <a href="http://www.gnu.org/software/emacs/">
	<img alt="Created with Emacs" height="33" src="img/emacs.png" style="border:0" width="88" class="down"/>
      </a>
      <a href="http://validator.w3.org/check/referer">
	<img alt="Valid XHTML 1.0!" height="31" src="http://www.w3.org/Icons/valid-xhtml10" style="border:0" width="88" class="down"/>
      </a>

    </p>

  </body>
</html>
    
Důležitou součástí hlavičky je kromě číselného kódu, který vyjadřuje výsledek dotazu (OK, dokument nenalezen apod.) také délka dokumentu (Content-Length), která se uvádí v bytech a umožňuje klientovi poznat konec předávaných dat. Uvedeno může být také kódování dokumentu a jeho mime-type v poli Content-Type.
Server nemusí posílat celý dokument najednou, ale může použít tzv. chunked encoding (v HTTP odpovědi se objeví "Transfer-Encoding: chunked"), což znamená, že sever bude posílat kousky výsledného dokumentu a před každým kouskem bude uvedena jeho délka v bytech.
Následující ukázka obsahuje HTTP hlavičku pro chunked encoding komunikaci a první část dokumentu. Všimněte si údaje e50, který udává délku této části dokumentu v hexadecimálním vyjádření.
HTTP/1.1 200 OK
Date: Mon, 15 Oct 2007 06:50:25 GMT
Server: Apache/1.3.37 (Unix) mod_perl/1.29
SLASH_LOG_DATA: shtml
X-Powered-By: Slash 2.005000179
X-Fry: I haven't had time off since I was twenty-one through twenty-four.
Cache-Control: private
Pragma: private
Vary: User-Agent,Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1


e50
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


<title>Slashdot: News for nerds, stuff that matters</title>

<link rel="stylesheet" type="text/css" media="screen, projection" href="//images.slashdot.org/core-tidied.css?T_2_5_0_179">
<!--[if IE]><link rel="stylesheet" type="text/css" media="screen, projection" href="//images.slashdot.org/iestyles.css?T_2_5_0_179"><![endif]-->
<link rel="stylesheet" type="text/css" media="print" href="//images.slashdot.org/print.css?T_2_5_0_179">
<link rel="stylesheet" type="text/css" media="handheld" href="//images.slashdot.org/handheld.css?T_2_5_0_179">



<script src="//slashdot.org/all-minified.js?T_2_5_0_179" type="text/javascript"></script>


<script type="text/javascript">
var adpage = 'index';
</script><link rel="top"       title="News for nerds, stuff that matters" href="//slashdot.org/" >
<link rel="search"    title="Search Slashdot" href="//slashdot.org/search.pl">
<link rel="alternate" title="Slashdot RSS" href="http://rss.slashdot.org/Slashdot/slashdot" type="application/rss+xml">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<!-- DoubleClick Random Number -->
<script type="text/javascript">
   dfp_ord=Math.random()*10000000000000000;
   dfp_tile = 1;
</script>
<!-- End DoubleClick Random Number -->

</head>
<body
    
Jaké informace váš browser posílá v rámci HTTP hlavičky naleznete např. zde.