CORS jeeApi : http OK, jsonrpc Pb?

Bonjour à tous,

J’arrive à utiliser l’api http en javascript mais pas l’api jsonrpc car elle ne semble pas accessible directement en javascript à cause du CORS. Vous me confirmez que c’est bien le cas ou j’ai fais une erreur quelque part ?
Si c’est bien le cas, c’est dommage de devoir passer par un proxy node ou php pour ce problème de CORS.

 //Fonctionne bien
fetch('https://xxx.eu.jeedom.link/core/api/jeeApi.php?apikey=xxx&type=cmd&id=30');
    
//Access to fetch at 'https://xxx.eu.jeedom.link/core/api/jeeApi.php' from origin 'https://xxx.fr' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
        fetch('https://xxx.eu.jeedom.link/core/api/jeeApi.php', {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                "jsonrpc": "2.0",
                "id": "1000",
                "method": "cmd::execCmd",
                "params": {"apikey": "xxx", "id": "30"}
            })
        });

Merci et bonne année
jerome

Bonjour,

Les cors sont définie sur votre site en .fr ici si je comprends bien le log, pas jeedom.

Mais votre post manque d’info: vous essayez de faire quoi, de où, quelle version…

Testez l’accès a l’api en direct depuis votre navigateur vous verrez qu’il n’y a évidemment pas de soucis pour l’utiliser

Bonjour,

Via node ça fonctionne bien (car pas de vérif sur le CORS) mais dans le navigateur ça ne fonctionne pas car le navigateur vérifie le CORS et je ne peux pas appeler jsonrpc directement en javascript.

J’ai essayé avec différents headers, de l’appeler depuis localhost ou via un serveur http et https, je n’ai pas réussi. Je vais essayer de voir dans le code source de jeeApi.php car je ne comprend pas…

Bonsoir,

En rajoutant l’option mode : mode: 'no-cors',

method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    mode: 'no-cors',
.....

Nickel ça marche merci !
Etonnant qu’il le fasse pour l’api jsonRPC et pas pour l’api http.

Vous faites les deux en POST?
Je pense que ca joue.

Oui car l’api http je l’apelle en GET et l’api json RPC je l’appelle en POST. Ca doit effectivement être lié à cela.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.