virtual server & DNS

Michal Kubecek mike na mk-sys.cz
Středa Květen 31 22:38:51 CEST 2006


On Wed, May 31, 2006 at 10:12:13PM +0200, Ing. Pavel PaJaSoft Janoušek wrote:
> Michal Kubecek <mailto:mike na mk-sys.cz> wrote:
> > 1. Verzování protokolu HTTP je z definice navrženo tak, aby spolu mohl
> > komunikovat 1.0 klient a 1.1 server a stejně tak naopak. Pokud tedy
> > nějaký server nebo proxy mají problémy s klienty
> > používajícími HTTP/1.1,
> > je to především chyba takového serveru nebo proxy.
> 
> A to jako proč? Jak má komunikovat server, který umí HTTP/1.0 s
> klientem, který požaduje chování dle vyšší verze protokolu (o které
> serveru není nic známo

Přečtěte si, prosím, sekci 3.1 v RFC 1945 a sekci 3.1 v RFC 2616.
Zejména tento odstavec jasně odpovídá na téma, kterým se tu zabýváme:

  An application that sends a request or response message that includes
  HTTP-Version of "HTTP/1.1" MUST be at least conditionally compliant
  with this specification. Applications that are at least conditionally
  compliant with this specification SHOULD use an HTTP-Version of
  "HTTP/1.1" in their messages, and MUST do so for any message that is
  not compatible with HTTP/1.0. For more details on when to send
  specific HTTP-Version values, see RFC 2145 [36].

Zmíněné RFC 2145 to pak vysvětluje zcela jasně. Zejména je tedy zcela
zřetelné, že označit verzí HTTP/1.0 request, který obsahuje hlavičku
Host:, je nekorektní chování, takový request má být označen HTTP/1.1.

> Jak už bylo poukázáno - nejrozšířenější a nejpoužívanější proxy server
> na světě Squid do dnes není HTTP/1.1 full compliant - problém tedy
> netrval pár měsíců, ale spoustu let a v podstatě trvá do dnes a ne
> zrovna v málo případech to způsobuje problémy... obecně se i dnes
> doporučuje s proxy servery komunikovat jen HTTP/1.0 - ty doporučení
> nejsou samoúčelná...

Pokud chcete komunikovat s proxy HTTP/1.0, je to vaše volba. Ale je
chybou označit jako HTTP/1.0 něco, co používá prvky, které se objevily
teprve v HTTP/1.1. Stejně tak se server, který umí pouze HTTP/1.0, má
korektně vypořádat s HTTP/1.1 requestem; nezvládne-li to, je špatně
napsaný. Pokud něco z HTTP/1.1 neumí, může příslušné části hlavičky
ignorovat, protokol je navržen tak, aby se s tím vypořádal.

Takže pokud squid tyto požadavky nerespektuje, znamená to, že je v něm
chyba a měl byste ji reportovat. Nevím, zda to tak opravdu je, já ho
nepoužívám, protože na užitečnost HTTP proxy nevěřím. :-)

> Ono toho v HTTP/1.0 nebylo podstatně více, přesto je do dnes spousta
> klientů, kteří komunikují tímto prokolem a přesto používají features,
> které k RFC1945 nenáleží - Host byl zmíněno, další na ráně je
> keep-alive, chunkování atd... - sám jste uvedl, že se HTTP snaží být
> maximálně verzově neutrální - takže to v podstatě ničemu nevadí a je
> to již 8 let, co máme HTTP/1.1 přesto jej při komunikaci deklaruje
> pouze menšina...

S tou menšinou bych si rozhodně dovolil nesouhlasit.

							  Michal Kubeček



Další informace o konferenci Linux