Partajarea resurselor încrucișate ( CORS ; din engleză - „sharing resources between different sources”) este o tehnologie a browserelor modernecare vă permite să oferiți paginilor web acces la resursele unui alt domeniu .
Există trei domenii care vă permit să descărcați resurse de pe serverul U. Pentru ca acest lucru să devină posibil, serverul web U, care oferă conținutul , trebuie doar să specifice o listă de domenii de încredere în Access-Control-Allow-Origin. antet răspuns : A, B, C. Atunci pentru paginile acestor domenii nu se vor aplica restricțiile principiului aceleiași origini pe paginile solicitate:
Access-Control-Allow-Origin: A, B, C
După aceea, paginile domeniilor A, B, C vor putea descărca conținut de pe serverul U.
Pentru PHP , acest lucru se face apelând funcția header():
Antet <?php ( "Access-Control-Allow-Origin: http://example.com" ); ?>Pentru a inițializa o solicitare cu origini încrucișate , browserul client adaugă o indicație de Origine ( domeniul site-ului din care provine cererea) la cererea HTTP . De exemplu, pagina http://www.a.com/page.html încearcă să obțină date de la pagina http://www.b.com/cors.txt. Dacă browserul client acceptă tehnologia CORS, cererea va arăta astfel:
GET /cors.txt HTTP/1.1 Gazdă: www.b.com Origine: www.a.comDacă serverul www.b.com permite primirea de date de la www.a.com, atunci răspunsul serverului va conține linia:
Acces-Control-Allow-Origin: http://www.a.comDacă această linie lipsește în răspunsul serverului , atunci un browser care acceptă tehnologia CORS va returna un cod de eroare în loc de date.
În cazul în care serverul dorește să permită accesul paginilor din orice domeniu , poate specifica în răspuns:
Acces-Control-Permite-Origine: *Dacă serverul dorește să permită accesul la mai mult de un domeniu , atunci răspunsul serverului trebuie să conțină o linie Access-Control-Allow-Origin pentru fiecare domeniu .
Acces-Control-Allow-Origin: http://www.a.com Acces-Control-Allow-Origin: http://www.b.com Acces-Control-Allow-Origin: http://www.c.comÎn practică, se utilizează mai des o înregistrare din mai multe domenii , separate printr-un spațiu [1] :
Acces-Control-Allow-Origin: http://www.a.com http://www.b.com http://www.c.comTehnologia CORS poate fi folosită ca o alternativă mai modernă și mai fiabilă la JSONP , deoarece vă permite să profitați din plin de XMLHttpRequest și, spre deosebire de JSONP, nu este vulnerabilă la injecția SQL . Pe de altă parte, tehnologia CORS necesită suport special în codul browserului , în timp ce JSONP nu depinde de acest lucru.