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 .
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" ); ?>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.comPokud 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.comPokud 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.comV 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.comTechnologie 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í.