přístup k datům (databázi) na jiném serveru
Na stránkách na serveru u wedosu bych potřeboval zobrazovat data z databáze, která je na jiném severu.
Na wedosu pomocí ajaxu volám php skript na vzdáleném serveru, který by měl data vracet. Volání je neúspěšné, vždy se mi v konzole zobrazí:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https:/www.xxxxxxxx.cz (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 200.
Zkoušel jsem v .htaccess (ve složce, v níž je volající skript případně i v kořenu mého webu) na straně wedosu nastavit
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin „*“
</IfModule>
Zkoušel jsem to nastavovat i pomocí php header (v syntaxi PHP), nic nepomáhá. Googlím už půl dne, zkouším různé varianty, neúspěšně.
Mohli byste mi poradit?
3 Answers
Jasně chybka 🙂
Myšleno doplnit na straně serveru – tedy php script který data odesílá.
Základní kód na doupravení:
<?php if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, DELETE, PUT, PATCH, OPTIONS'); header('Access-Control-Allow-Headers: token, Content-Type'); header('Access-Control-Max-Age: 1728000'); header('Content-Length: 0'); header('Content-Type: text/plain'); die(); } header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); $ret = [ 'result' => 'OK', ]; print json_encode($ret);
To jsem psal ve své otázce, že jsem už taky zkoušel.
Jen abych si to upřesnil. Mám tuto strukturu php souboru:
<?php header(‚Access-Control-Allow-Origin: *‘); ?>
<button onclick=“volejCizince()“> zavolej cizince</button>
<script>
function volejCizince() { // a zde volám pomocí AJAXu vzdálený server }
</script>
A toto mi hlásí ten problém ‘Access-Control-Allow-Origin’ missing.
Ještě je zatím informace Status code 200, což chápu tak, že ten PHP script na tom vzáleném serveru vidí.