Sdílení zdrojů mezi zdroji

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 12. listopadu 2020; ověření vyžaduje 21 úprav .

Cross-origin resource sharing ( CORS ; z  angličtiny  -  „sharing resources between different sources“) je technologie moderních prohlížečů , která umožňuje poskytnout webovým stránkám přístup ke zdrojům jiné domény .

Podstata technologie CORS

Existují tři domény , které vám umožňují stahovat zdroje ze serveru U. Aby to bylo možné, webový server U, který poskytuje obsah , stačí zadat seznam důvěryhodných domén v Access-Control-Allow-Origin hlavička odpovědi : A, B, C. Pak pro stránky těchto domén nebudou platit omezení principu stejného původu na požadovaných stránkách:

Access-Control-Allow-Origin: A, B, C

Poté budou moci stránky domén A, B, C stahovat obsah ze serveru U.

U PHP se to dělá voláním funkce header():

<?php hlavička ( "Access-Control-Allow-Origin: http://example.com" ); ?>

Příklad použití

Pro inicializaci požadavku napříč původem přidá klientský prohlížeč k požadavku HTTP označení Origin ( doména webu, ze kterého požadavek pochází) . Například stránka http://www.a.com/page.html se snaží získat data ze stránky http://www.b.com/cors.txt. Pokud klientský prohlížeč podporuje technologii CORS, bude požadavek vypadat takto:

GET /cors.txt HTTP/1.1 Hostitel: www.b.com Původ: www.a.com

Pokud server www.b.com umožňuje příjem dat z www.a.com, bude odpověď serveru obsahovat řádek:

Access-Control-Allow-Origin: http://www.a.com

Pokud tento řádek v odpovědi serveru chybí , pak prohlížeč , který podporuje technologii CORS , vrátí místo dat chybový kód .

V případě, že chce server povolit přístup pro stránky z libovolné domény , může v odpovědi uvést:

Access-Control-Allow-Origin: *

Pokud chce server povolit přístup do více než jedné domény , musí odpověď serveru obsahovat jeden řádek Access-Control-Allow-Origin pro každou doménu .

Access-Control-Allow-Origin: http://www.a.com Access-Control-Allow-Origin: http://www.b.com Access-Control-Allow-Origin: http://www.c.com

V praxi se častěji používá záznam z více domén oddělený mezerou [1] :

Access-Control-Allow-Origin: http://www.a.com http://www.b.com http://www.c.com

Vztah mezi CORS a JSONP

Technologie CORS může být použita jako modernější a spolehlivější alternativa k JSONP , protože vám umožňuje plně využít XMLHttpRequest a na rozdíl od JSONP není zranitelná vůči SQL injection . . Na druhou stranu technologie CORS vyžaduje speciální podporu v kódu prohlížeče , zatímco JSONP na tom nezávisí.

Podpora prohlížeče

  • Gecko 1.9.1 ( Firefox 3.5 [2] , SeaMonkey 2.0) a vyšší.
  • WebKit ( Safari 4 a vyšší [3] , Google Chrome 3 a vyšší [4] , případně starší).
  • MSHTML/Trident 6.0 ( Internet Explorer 10 ) má vestavěnou podporu [5] , MSHTML/Trident 4.0 a 5.0 ( Internet Explorer 8 a 9) poskytuje částečnou podporu prostřednictvím objektu XDomainRequest. Prohlížeče Internet Explorer 10 a 11 podle dostupných zpráv o chybách [6] nepodporují CORS pro mezinárodní názvy domén ( IDN ) obsahující znaky jiné než latinky.
  • Prohlížeče Presto (Opera) CORS je implementován v Opeře 12.00 [7] a Opeře Mobile 12, ale ne v Opeře Mini.

Poznámky

  1. Cross-Origin Resource Sharing . Získáno 22. listopadu 2013. Archivováno z originálu 6. března 2017.
  2. Řízení přístupu HTTP (CORS) - HTTP | MDN . Datum přístupu: 24. února 2014. Archivováno z originálu 21. února 2014.
  3. cross-site xmlhttprequest s CORS ✩ Mozilla Hacks - blog webových vývojářů . Získáno 24. února 2014. Archivováno z originálu 11. září 2019.
  4. Archivovaná kopie (odkaz není dostupný) . Datum přístupu: 24. února 2014. Archivováno z originálu 19. července 2012. 
  5. Tony Ross, programový manažer, Internet Explorer. CORS pro XHR v IE10 . MSDN (9. února 2012). Získáno 2. prosince 2015. Archivováno z originálu 5. prosince 2015.
  6. Prohlížeč nerozpozná Access-Control-Allow-Origin, pokud se jedná o doménu IDN - Microsoft Edge Development (downlink) . developer.microsoft.com. Získáno 18. září 2016. Archivováno z originálu 19. září 2016. 
  7. Opera: Opera 12.00 pro UNIX Changelog (downlink) . Získáno 24. února 2014. Archivováno z originálu 18. června 2012. 

Literatura

  • Monsur Hossain. CORS v akci: Vytváření a používání rozhraní API pro různé zdroje. - Manning Publications Company, 2014. - 240 s. - ISBN 978-1-61729-182-1 .
  • Mike Shema. Hackování webových aplikací: Detekce a prevence problémů se zabezpečením webových aplikací. - Newnes, 2012. - S. 3-6. — ISBN 978-1-59749-951-4 .