Portál AbcLinuxu, 12. května 2025 06:46

Dotaz: verze HTTP ?

26.10.2006 14:06 hadr
verze HTTP ?
Přečteno: 146×
Odpovědět | Admin
Ahoj, jak jednoduse zjistim ,zda dany webovy server umi HTTP/1.0 a/nebo HTTP/1.1. Jde to telnetem? Diik
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.10.2006 15:02 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: verze HTTP ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
pošleš mu HTTP/1.1 request (cez telnet), napr
GET / HTTP/1.1
Host: www.example.com
Connection: Keep-Alive
Content-Length: 0

27.10.2006 00:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: verze HTTP ?

Měl bych pár šťouravých otázek: 1. Proč posíláte Content-Length u metody GET? 2. Proč požadujete keep-alive, když stejně chcete poslat jen jeden dotaz? 3. Jak z výsledku poznáte, zda server "umí HTTP/1.1"?

K původnímu dotazu: otázku považuji za tak trochu nesmyslnou. Verze HTTP jsou navrženy tak, aby byly navzájem plně kompatibilní, souhlasí-li major číslo, tedy na dotaz HTTP/1.1 můžete dostat odpověď HTTP/1.0 a naopak na HTTP/1.0 dotaz HTTP/1.1 odpověď. Server může rozumět jen některým novým prvkům HTTP/1.1 a nebo také vůbec žádným, protokol je navržen tak, aby se s tím vypořádal. Takže pokud dodržíte specifikaci protokolu, nemá smysl se zabývat tím, zda server "umí HTTP/1.1", ať už to znamená cokoli. Prostě mu pošlete HTTP/1.1 dotaz, on už si s tím nějak poradí; čemu nebude rozumět, to může beztrestně ignorovat, to, co by dělalo problémy, pokud byste tomu nerozuměl vy, smí použít pouze v případě, že v dotazu deklarujete, že tomu rozumíte.

27.10.2006 06:15 cronin | skóre: 49
Rozbalit Rozbalit vše Re: verze HTTP ?
3. Jak z výsledku poznáte, zda server umí HTTP/1.1?
Tak takuto odpoved som mal pripravenu aj ja, ale najskor som ten get vyskusal. A cuduj sa svete, server mi v hlavicke odpovede poslal podporovanu verziu HTTP. Takze ano, tak ako je uvedene, sa da pozadovana informacia zistit.
K původnímu dotazu: otázku považuji za tak trochu nesmyslnou. Verze HTTP jsou navrženy tak, aby byly navzájem plně kompatibilní, souhlasí-li major číslo, tedy na dotaz HTTP/1.1 můžete dostat odpověď HTTP/1.0 a naopak na HTTP/1.0 dotaz HTTP/1.1 odpověď. Server může rozumět jen některým novým prvkům HTTP/1.1 a nebo také vůbec žádným, protokol je navržen tak, aby se s tím vypořádal. Takže pokud dodržíte specifikaci protokolu, nemá smysl se zabývat tím, zda server "umí HTTP/1.1", ať už to znamená cokoli. Prostě mu pošlete HTTP/1.1 dotaz, on už si s tím nějak poradí; čemu nebude rozumět, to může beztrestně ignorovat, to, co by dělalo problémy, pokud byste tomu nerozuměl vy, smí použít pouze v případě, že v dotazu deklarujete, že tomu rozumíte.
ALE TO SNAD NEMYSLITE VAZNE! (Ano, kricim.)
27.10.2006 10:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: verze HTTP ?
Tak takuto odpoved som mal pripravenu aj ja, ale najskor som ten get vyskusal. A cuduj sa svete, server mi v hlavicke odpovede poslal podporovanu verziu HTTP. Takze ano, tak ako je uvedene, sa da pozadovana informacia zistit.

Ne, to se mýlíte. Zkuste si přečíst tu specifikaci protokolu, když už jsem vám na ni poslal odkaz. Nebo aspoň část, která se zabývá specifikací verze protokolu.

ALE TO SNAD NEMYSLITE VAZNE! (Ano, kricim.)

Nikoli, to myslím naprosto vážně. Zkuste místo křičení najít, v čem (podle vás) nemám pravdu. A pokud možno s odkazem na odpovídající specifikace.

27.10.2006 08:46 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: verze HTTP ?
na HTTP/1.1 request môžete dostať HTTP/1.0 odpoveď, no na HTTP/1.0 request dostať HTTP/1.1 response nesmiete (a vtedy musí HTTP/1.1 server odpovedať HTTP/1.0).

Keep-Alive je tam preto, aby si človek zároveň overil, či server túto featuresku podporuje.
Z odpovede to poznáte jednoducho, syntax HTTP/1.0 a HTTP/1.1 status line je:
protocol-version code message

27.10.2006 09:39 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: verze HTTP ?
RFC 2616 o tom říká něco jiného:
The HTTP version of an application is the highest HTTP version for which the application is at least conditionally compliant.
A protože v tom hodně lidí mělo podobný zmatek, jako vy, vznikla ještě vysvětlující RFC 2145, kde je mimo jiné:

An HTTP server SHOULD send a response version equal to the highest version for which the server is at least conditionally compliant, and whose major version is less than or equal to the one received in the request. An HTTP server MUST NOT send a version for which it is not at least conditionally compliant. A server MAY send a 505 (HTTP Version Not Supported) response if cannot send a response using the major version used in the client's request.

An HTTP server MAY send a lower response version, if it is known or suspected that the client incorrectly implements the HTTP specification, but this should not be the default, and this SHOULD NOT be done if the request version is HTTP/1.1 or greater.

Přičemž ty hloupé klienty zmiňované v 2. odstavci už se snad moc nevyskytují…
27.10.2006 15:44 cronin | skóre: 49
Rozbalit Rozbalit vše Re: verze HTTP ?
naopak na HTTP/1.0 dotaz HTTP/1.1 odpověď.
Nie.
nemá smysl se zabývat tím, zda server "umí HTTP/1.1", ať už to znamená cokoli.
Asi to predsa len nejaky zmysel ma, ked sa uz autor povodnej otazky podujal riesit to tak naliehavo, ze oslovil toto forum. Mne napada napr. taky zmysel, ze by som chcel vediet, ci server vie http keepalive a pipeline.
27.10.2006 16:03 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: verze HTTP ?
aj HTTP/1.1 serveru sa dá zakázať Keep-Alive. (preto som v príklade dal Connection: Keep-Alive)
27.10.2006 16:09 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: verze HTTP ?
To je zajímavé, jak se tato diskuze rozdělila na dva tábory. Jedni tvrdí, že na dotaz HTTP/1.0 je možné poslat HTTP/1.1 odpověď, a odkazují nebo citují příslušná RFC. Druhý tábor tvrdí a křičí nie a nesmiete a zatvrzele si odmítá přečíst alespoň tu část RFC, která je citována přímo tady v diskuzi.

Máte tedy kromě vašeho ne, ne a ne nějaký argument, třeba že špatně ona RFC interpretujeme, pro protokol HTTP platí jiná RFC nebo co já vím co ještě? Pouhým opakováním vašeho názoru bez podpory argumentů nikoho nepřesvědčíte.
27.10.2006 16:43 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: verze HTTP ?
Mne napada napr. taky zmysel, ze by som chcel vediet, ci server vie http keepalive a pipeline.

1. Z toho, že vám server v odpovědi pošle HTTP/1.1, nijak nepoznáte, zda umí keep-alive nebo pipelining.

2. Na pipelining bych se musel podívat (předpokládám, že to v principu bude podobné), ale keep-alive je názorným příkladem toho, proč nemá smysl verzi zjišťovat (zůstáváme-li v rámci stejné major verze). Vy prostě v hlavičce dotazu deklarujete podporu a zájem a server se podle toho zařídí. Pokud jste podporu deklaroval, on to podporuje také a nemá to v konfiguraci zakázáno, keep-alive použije, jinak ne. Pokud keep-alive umíte a máte o něj zájem, sdělte to serveru v hlavičce a uvidíte, zda ho použije; pokud keep-alive nechcete/neumíte, do hlavičky nic nepište a nemáte se čeho bát. Zjišťovat něco předem je zbytečné.

27.10.2006 16:36 h7
Rozbalit Rozbalit vše Re: verze HTTP ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano,podle specifikace server na dotaz v 1.0 muze odpovedet v 1.1. Resili jsme s nasim technickym partnerem problem,kdy se dotazoval na nas server v 1.0 a apache mu odpovidat v 1.1 a klient si s odpovedi nevedel rady (i kdyz by podle specifikace mel). Musel jsem tedy apache nastavit tak ,aby odpoved vracel ve stejne verzi. (napr. tomcat se tak chova defaultne). Na internetu jsem se take docetl ,ze nektere "stare" proxy mechanizmy maji s 1.1 problem. Diky vsem za prispevky! h7

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.