Portál AbcLinuxu, 2. května 2025 17:33
To byl právě impulz k napsání tohoto zápisku To s tím URL nebo nějakou lepší formou mě napadlo už dřív, ale teď už mi to fakt nedalo a musel jsem to někam napsat.
Spíš si říkám, co je serverům do toho, jaký mám prohlížeč? Má to být podle standardů a ne dělat nějaké bastly pro konkrétní prohlížeče. Ale na druhou stranu by se hodilo znát na serveru aspoň třídu zařízení (desktop/tablet/mobil) případně to rozlišení – aby se tomu dal přizpůsobit web. Taky je trochu škoda, že je to bezestavový protokol a tahle informace se musí posílat pořád sem tam, to je jak u blbých – stačilo by zahájit relaci, poslat informace o prohlížeči a dál přenášet jen kratší požadavky/odpovědi. Stejně tak přihlášení – přihlásil by ses jednou a dokud by vydrželo TCP spojení, tak bys byl přihlášený – nemuselo by se šaškovat s cookies nebo posíláním hesla v každém požadavku. Ale to už jsme trochu odbočili
JSON nebo XML mi tady přijdou jako kanón na vrabce – v podstatě stačí zapsat jen nějakou strukturu klíč/hodnota případně nějaký základ (ID prohlížeče) a na to se ten formát URL dobře hodí.
Možná je ten User-Agent úplně zbytečný… Ale zase když ty informace vytáhneš pomocí JS, tak to znamená jeden požadavek/odpověď, kterým se stáhne ten JS a až v dalším požadavku si můžeš vyžádat verzi stránky specifickou pro tvoje zařízení.
Ale na druhou stranu by se hodilo znát na serveru aspoň třídu zařízení (desktop/tablet/mobil) případně to rozlišení – aby se tomu dal přizpůsobit web. Taky je trochu škoda, že je to bezestavový protokol a tahle informace se musí posílat pořád sem tam, to je jak u blbých – stačilo by zahájit relaci, poslat informace o prohlížeči a dál přenášet jen kratší požadavky/odpovědiProtože nikdo v průběhu prohlížení nemění velikost okna prohlížeče, nepřipojuje druhý monitor, ...
Tady jde spíš o tu hrubou kategorii zařízení (desktop/tablet/mobil). Moc si nedovedu představit, že by se z tvého desktopu stal mobil a zachovalo se při tom TCP spojení. Leda že bys měl mobil s HDMI rozhraním a připojeným monitorem a USB klávesnici a pak ho odpojil a chtěl pokračovat na tom malém displeji Nicméně stavový protokol neznamená, že nemůžeš v případě změny poslat paket s aktualizovanými údaji – stavový protokol znamená, že nemusíš posílat tu samou informaci znova a znova v každém požadavku.
Takáto zmena nie je zatiaľ celkom bežná, ale viem si v budúcnosti predstaviť používať mobilný telefón zároveň ako počítač. Jednoducho prídem domov, hodím do docku a surfujem si príjemne s monitorom a klávesnicou.
Taky je trochu škoda, že je to bezestavový protokol a tahle informace se musí posílat pořád sem tam, to je jak u blbých – stačilo by zahájit relaci, poslat informace o prohlížeči a dál přenášet jen kratší požadavky/odpovědi.Taky je potreba si uvedomit, za jakym ucelem a v jake dobe. Z tohoto pohledu byl HTTP navrzen velmi dobre. To, jak se dneska HTTP/HTML pouziva je jedno velke znasilneni a ukazka toho, jak evoluce muze skoncit v lokalnim minimu.
Bohužel mentalita webových vývojářů je taková, že to musí mít za každou cenu kompatibilní s každým prohlížečem a tak se uchylují k totálním kravinámTvoje mentalita je tedy taková, že webové stránky budou přístupné pouze v prohlížečích dle vůle kodéra? Takže na jednu stránku je třeba otevřít IE (protože v Chromu to nefunguje), na druhou pouze webkit, protože to nefunguje jinde... Jardíku, dělal jsi vůbec někdy něco? Nějakou práci? Myslíš, že zadavatele zajímají standardy nebo výsledek? Vážně nevím, kdo je tu hloupý..
Tohle je právě ta pošahaná webkodérská logika. Web není o tom, aby byl výsledek na bod přesně (jestli tohle potřebuješ, tak doporučuji jiné formáty). Web je o tom, abys publikoval nějaké zajímavé informace a mohl jsi tomu dát nějakou formu (nadpisy, seznamy, tabulky) nebo ideálně i sémantiku (metadata, RDF, Dublin Core…). Jestli to bude v jednom prohlížeči šoupnuté trochu doprava a v jiném trochu doleva je jedno – máš ten design udělat dostatečně pružný na to, aby to nevadilo. A stejně jde hlavně o ten obsah.
Pokud jde o nějaká JavaScriptová API, tam to zase má fungovat tak, že si zavoláním nějaké funkce zjistíš, jestli je dané API dostupné – ne že budeš luštit nějaký textový řetězec (údajně identifikaci prohlížeče) a z něj hádat, jestli tohle API použít lze nebo ne.
Já mám právě vizi v tom, že ten web bude jednoduchý a nepřeplácaný…
ohle je právě ta pošahaná webkodérská logika. Web není o tom, aby byl výsledek na bod přesně (jestli tohle potřebuješ, tak doporučuji jiné formáty).Ta pošahaná logika není, respektive nebyla ani tak webkodérská (s vyjímkou pošahaných webkodérů
To máš jako s architekty – ten dobrý ti odmítne postavit přeplácanou obludnost plnou nesmyslů a nelogičností – buď klienta přesvědčí/usměrní nebo takovou zakázku nevezme – ale nepodepíše se pod něco, co se mu nelíbí.
A myslíš, že u architektů dělba práce nefunguje? I tam můžeš mít ateliér a v něm kreslíře, který jen kreslí podle zadání a pak někoho, kdo rozhoduje. Pak je to zodpovědnost toho ateliéru jako celku. Stejně tak u webu – jeden člověk může dělat všechno, nebo je to nějaké studio, ale princip je stejný.
Optimalizováno má být pro standard, a o rozlišení nemá vůbec být řeč, protože rozlišení obrazovky != velikost okna prohlížeče.+1 Nevím, který idiot vymyslel, že v okně neuvidím vůbec nic jenom proto, že se to okno nachází na velkém monitoru.
+1
Nicméně tuhle HTTP hlavičku bych úplně nerušil. 1) typ prohlížeče může být zajímavý pro statistiky 2) je užitečné znát typ zařízení (desktop/mobil/tablet…) nebo velikost obrazovky – ostatní údaje se dají anonymizovat (resp. neposílat), tzn. třeba: user-agent://hidden?device=desktop
nebo user-agent://hidden?screenX=1920&screenY=1080
X-Forwarded-For
a další nestandardní hlavičky začínající X-
, ale jen ze strany serveru (nebo testovačem proxy, jako je tenhle]. Ale pamatuju, že jsem kdysi viděl divné hlavičky (X-Checked-By
?) u transparentí proxy, co fungovala (mizerně) zároveň jako antivir.
jj, o tom jsem taky uvažoval, asi by to bylo i lepší… chtělo by to strojově čitelný formát, který by se z toho URL stáhnul a všechny tyhle informace obsahoval – servery by tuhle informaci měly nakešovanou. Mohlo by taky být pravidlo, že tahle metadata musí být neměnná – tzn. stačilo by je stáhnout opravdu jen jednou a už by nebylo potřeba kontrolovat, zda nedošlo ke změně. Kdyby třeba přibyl nový podporovaný MIME typ nebo nějaké JS API, musela by se změnit verze resp. URL.
P.S. na druhou stranu je to trochu složitější a znamená to, že informaci o typu zařízení nebo rozlišení nemáš hned v HTTP hlavičce a musíš ji stahovat odjinud. Ještě by to šlo zkombinovat – mít standardizované názvy GET parametrů pro ty obvyklé věci, aby to bylo hned v hlavičce a ten zbytek stahovat až v případě potřeby.
Posílat to v hlavičkách je podle mne neefektivní, protože když se stahuje jenom jedna stránka s desítkami objektů, pošle se ta informace v hlavičkách zbytečně třeba padesátkrát.
To už je bohužel vlastnost dnešního HTTP – hlavičku Host taky posíláš pokaždé znova, i když bude pořád stejná a stačila by nastavit jednou. Pokud potřebuješ data z jiné domény z té samé IP, tak by sis otevřel nové TCP spojení nebo byl poslal aktualizovanou hlavičku v rámci stávajícího.
takže se dnes server ani nedozví, jakou verzi HTML prohlížeč podporuje nebo zda podporuje SVG.
Jo, to je právě škoda – v hlavičce Accept by se měl poslat nejen MIME typ, ale i podporované verze. Zároveň je ale nesmysl to posílat v každém požadavku znova a znova.
HTTP 2.0 tohle trošku řeší, protože v rámci spojení se posílají jen změněné hlavičky.
Třeba se toho jednou dožijeme
místo dotazu na externí server by se na ten dokument s popisem UA server v rámci otevřeného spojení zeptal rovnou klienta.
njn, nejradši bych úplně jiný protokol, který by umožnil obousměrné posílání zpráv…
Jak je typ zařízení daný URL např.
http://ua.example.com/v1.0
? Z toho nevyčteš nic – musel by sis stáhnout popis, který se na tomhle URL nachází. Proto jsem psal o tom, že by to šlo zkobinovat. Např.
http://ua.example.com/v1.0?device=desktop
GET parametry by byly standardizované (typ zařízení, velikost okna atd.). Pokud by serveru stačily ty informace zakódované v URL, nemusel by nic stahovat.
{ "browser": { "name": "firefox", "version": 26, "homepage": "http://firefox.mozilla.cz/", "render_engine": "gecko", "description": "We are Mozilla Doing good is part of our code" }, "os": { "name": "fedora", "version": 21, "homepage": "http://fedoraproject.org/", "description": "Fedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and share." }, "screen": { "width": 1280, "height": 1200, "colours": 32, "description": "HP w2408h" } }
A tohle bys posílal v každém HTTP požadavku?
Nejde až tak o formu (URL/XML/JSON), jako spíš o množství informací.
Nebo jsi to myslel tak, že v HTTP hlavičce by byl odkaz na stažení tohoto souboru?
Server podle toho správně usoudí, že prohlížeč neumí nic, a pošle čistě textovou stránku v HTML 4.
A je to v roce 2014 správný předpoklad? IMHO je spíš pravděpodobnější, že je uživatel paranoidní1 než že používá nějaký archaický prohlížeč.
Hlavně by se to nemělo řídit User-Agent
hlavičkou, ale spíš Accept
hlavičkou.
[1] resp. zdravě obezřetný
User-Agent
a Accept*
.
User-Agent
předepsat nějakou jednotnou formu a ještě krásnější by asi bylo zbavit se ho úplně. Ale na světě existuje tolik webů, skriptů a nástrojů, které jsou závislé na současných hodnotách, že to nevidím moc reálně.
Your user agent: Fedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and shareFedora is a fast, stable, and powerful operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and share ...
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
User-Agent: ...
It's completely free to use, study, and shareOh, opravdu?
Jen bych doplnil (protože jsi to už vícekrát použil :)), toto není problém problém Fedory, ale čehokoliv z USA (nevím jestli spadající do určité široké kategorie, nebo všeho). Prostě mají takové zákony a amící to musí dodržovat, jinak jdou bručet.
Neustále chtějí podepisovat (amíci), že na jejich zařízení nikdy nic pro tyto země/případy neuděláme a že nikdo komu to (pro)dáme jim to taky ne(pro)dá. Oni jsou vlastně chudáci, tady jim to nikdo nepodepíše, ale oni jsou pak za to doma odpovědní…
toto není problém problém Fedory, ale čehokoliv z USA (nevím jestli spadající do určité široké kategorie, nebo všeho). Prostě mají takové zákony a amící to musí dodržovat, jinak jdou bručet.Já to chápu, ale pak prostě nemůžou psát, že je ta věc svobodná. Tip na FPGA, které není zatížené tímto nesmyslem? :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.