WebSocketWebSocket je počítačový komunikační protokol, poskytující plně duplexní (obousměrný) komunikační kanál přes jediné TCP připojení. Protokol WebSocket byl standardizován komisí IETF jako RFC 6455 v roce 2011, a WebSocket API ve Webové IDL bylo standardizováno konsorciem W3C. WebSocket je navržen tak, aby mohl být prováděn ve webových prohlížečích a na webových serverech, ale může být použita jakákoliv klientská a serverová aplikace. WebSocket je nezávislý protokol založený na základě TCP. Jeho jediný vztah k HTTP je, že jeho handshake (navázání spojení) je interpretováno HTTP servery jako požadavek na upgrade.[1] Protokol WebSocket umožňuje interakci mezi prohlížečem a webovým serverem s nižší režií, usnadňuje real-time přenos dat ze serveru a na server. To je možné proto, že poskytuje standardizovaný způsob pro odeslání obsahu ze serveru do prohlížeče, aniž by to bylo na požadavek klienta (jako v případě AJAXu), a umožňuje předání zpráv tam i zpět, zatímco je udržováno otevřené spojení. Tímto způsobem může probíhat obousměrná (bi‑directional) komunikace mezi prohlížečem a serverem. Tato komunikace probíhá přes TCP port číslo 80 (nebo 443 v případě TLS-šifrovaných spojení), což je výhoda pro ta prostředí, kde jsou newebová připojení k Internetu blokována firewallem. Podobně obousměrné komunikace prohlížeč-server bylo dosahováno nestandardizovanými způsoby používajícími provizorní technologie, jako je Comet. Protokol WebSocket, je v současné době podporován ve většině hlavních prohlížečů, včetně Google Chrome, Microsoft Edge, MS Internet Exploreru, Firefoxu, Safari a Opeře. WebSocket však vyžaduje podporu také na straně serveru, nejen klienta (prohlížeče) a jeho JavaScriptu. PřehledNa rozdíl od HTTP, WebSocket umožňuje obousměrnou komunikaci.[2][3] Navíc, WebSocket umožňuje proudy zpráv na základě TCP. Vlastní TCP se zabývá proudy bajtů a ne vlastním konceptem zpráv. Před příchodem WebSocketu, byla obousměrná komunikace na portu 80 dosažitelná pomocí kanálů Comet; nicméně její realizace byla netriviální a vzhledem k režii TCP handshake a HTTP záhlaví nad sebou, je neefektivní pro malé zprávy. WebSocket protokol si klade za cíl řešit tyto problémy, bez ohrožení bezpečnostních předpokladů webu. Protokol WebSocket specifikace definuje Pomocí prohlížeče Developer Tools, vývojáři mohou kontrolovat navazování spojení WebSocketu, stejně jako jeho rámců.[6] Bezpečnostní aspektyNa rozdíl od běžných požadavků HTTP mezi doménami nejsou požadavky WebSocket omezeny zásadou stejného původu. Servery WebSocket proto musí během navazování připojení ověřit hlavičku „Origin“ proti očekávaným zdrojům, aby se vyhnuly útokům únosu WebSocket mezi weby (podobně jako padělání požadavků mezi weby), které by mohly být možné, když je připojení ověřeno pomocí souborů cookie nebo HTTP autentizace. Je lepší použít tokeny nebo podobné ochranné mechanismy k ověření připojení WebSocket, když jsou přes WebSocket přenášena citlivá (soukromá) data.[7] Živý příklad zranitelnosti byl viděn v roce 2020 v podobě Cable Haunt. Implementace v prohlížečíchZabezpečená verze protokolu WebSocket je implementována ve Firefoxu 6,[8] Safari 6, Google Chrome 14,[9] Opeře 12.10 a Internet Exploreru 10.[10] Podrobná zpráva z testů protokolu[11] uvádí shodu těchto prohlížečů na jeho konkrétní aspekty. Starší, méně bezpečná verze protokolu byla realizována v Opeře 11 a Safari 5, stejně jako v mobilní verzi Safari v iOS 4.2.[12] BlackBerry prohlížeč v OS7 implementuje protokol WebSocket.[13] Z důvodu chyby v návrhu byl zakázán ve Firefoxu 4 a 5,[14] jakož i v Opeře 11.[15] K dispozici je také přepínač příkazového řádku
OdkazyReferenceV tomto článku byl použit překlad textu z článku WebSocket na anglické Wikipedii.
Související článkyExterní odkazy
|