Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:cross-origin

< Web

Cross-Origin

Cross-Origin kérések

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.

Hozzáférés vezérlés

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
  • Access-Control-Allow-Origin
    • null vagy *, ami az összes forrást jelenti
  • Access-Control-Allow-Methods
    • HTTP metódusok.
  • Access-Control-Allow-Headers
    • A kérelemben szereplő fejlécek listája.
    • Hitelesítést itt kell feltüntetni.

Beállítás .htaccess fájlban

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 "*"

Beállítás PHP-ból

A következő példa egy nyilvános REST API számára lehetséges beállítás.

Elég egyetlen sor:

cors.php
<?php
header('Access-Control-Allow-Origin: *');

De minden mást is szabályozhatunk:

cors.php
<?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.

Proxy

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.

Linkek

oktatas/web/cross-origin.txt · Utolsó módosítás: 2021/10/25 20:30 szerkesztette: admin