Chybějící podpora Cross-Origin Resource Sharing (CORS)
Cross-Origin Resource Sharing (CORS) je technika využívající hlaviček protokolu HTTP, která umožňuje aplikacím běžícím ve webovém prohlížeči přistoupit ke zdroji (datům), který leží na jiné doméně než na které běží ona aplikace. Takový přístup je ve výchozím stavu z bezpečnostních důvodů zablokován. V kontextu otevřených dat je ale žádoucí, aby takovým aplikacím byl přístup k datům umožněn. Detailně se způsobu fungování CORS věnuje web enable-cors.org (anglicky), kde lze nalézt i příklady konfigurace pro jednotlivé webservery, či článek o CORS na webu Mozilla (anglicky).
Symptomy
Při přístupu aplikace běžící v problížeči k otevřeným datům přístupným přes webserver nepodporující CORS je tento přístup zablokován.
V konzoli prohlížeče je hláška podobná této: XMLHttpRequest cannot load http://localhost:3000/example. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
.
Řešení
Pro přístup ke čtení otevřených dat se dá CORS vyřešit velmi zjednodušeně tak, že webový server bude při přístupu ke zdroji (souboru) pomocí HTTP metod GET
, HEAD
a OPTIONS
vracet hlavičku Access-Control-Allow-Origin
s hodnotou *
, případně ještě hlavičku Access-Control-Allow-Methods
s hodnotou GET, HEAD, OPTIONS
.
Pro složitější konfiguraci se řiďte webem enable-cors.org (anglicky).
Národní katalog otevřených dat kontroluje dostupnost techniky CORS metodou OPTIONS
.