A böngészők biztonsági okokból nem engedik meg más forrásból származó HTTP kéréseket. Ez megkötés megköveteli, hogy a azonos tartományba helyezzük a webhelyünk részeit.
Példa a blokkolásra:
Access to fetch at 'http://localhost:8000/list.php' from origin 'http://localhost:3000' has been blocked by CORS policy
A böngészők akkor állítanak be CORS irányelv blokkolást, ha például egy API tartományneve (domain, gépnév cím) nem egyezik meg a lekérő nevével. Ez a viselkedés biztonsági okokból elvárható.
Szerveroldalon engedélyezhető a hozzáférés CORS irányelvek beállításával. Nyilvánossá is tehetjük az API-t, de megadhatjuk, hogy csak egy tartománynévre működjön.
A következő szabályokat szokás beállítani:
Access-Control-Allow-Origin: http://engedett.domain.lan Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: Content-Type
Header Set Access-Control-Allow-Origin "https://kulso-eroforrascim"
Ha csak egy (*) karakter állítunk be, a CORS le van tiltva, és mindenhonnan elérhető az erőforrás.
Header Set Access-Control-Allow-Origin "*"
A következő példa egy nyilvános REST API számára lehetséges beállítás.
Elég egyetlen sor:
De minden mást is szabályozhatunk:
<?php header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); header('Access-Control-Allow-Headers: *'); header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
A cors.php fájl egy require() függvénnyel beemelve, a szabályok érvénybe lépnek.
Ha a célszerveren CORS blokkolás van, beállíthatunk egy proxyt is. Proxynak megfelel egy másik szerver (akár PHP szerver), amin mi vagyunk a rendszergazdák, vagy be engedélyezve van a Cross-Origin kérés.
Ez azért lehetséges, mert a blokkolás a böngészőkben van beállítva.