Seite 1 von 1

JSON RPC - Blocked by CORS policy

Verfasst: 12 Mär 2025, 11:16
von Tjark
Moin,

aktuell bin ich dabei ein kleines Webtool zu entwickeln zum vereinfachten registrieren von Geräten in unserem Unternehmen.
Dafür versuche ich mithilfe der JSON-RPC Schnittstelle eine anfrage an unseren Configserver zu schicken.

Meine anfrage sieht wie folgt aus (JavaScript):

Code: Alles auswählen

const data = JSON.stringify({
    id: 1,
    jsonrpc: '2.0',
    method: 'host_createOpsiClient',
    params: [
        'apiDummy.<<domain>>',
        null,
        'Beschreibung',
        null,
        '00:11:22:33:44:55',
        '0.0.0.0',
        null,
        null,
        null,
        null,
        null
    ]
});

const req = new XMLHttpRequest();
req.withCredentials = true;

req.addEventListener('readystatechange', function () {
    if (this.readyState === this.DONE) {
        console.log(this.responseText);
    }
});

req.open('POST', 'https://<<configserver>>:4447/rpc?');
req.setRequestHeader('Content-Type', 'application/json');
req.setRequestHeader('Authorization', 'Basic' + btoa("<<username>>:<<password>>"));

req.send(data);
Anscheinend werden meine Anfragen aber vom Server von CORS blockiert:
Access to XMLHttpRequest at 'https://<<configserver>>:4447/rpc?' from origin 'http://172.16.31.45' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header has a value 'http://<<configserver>>:4447' that is not equal to the supplied origin.

Re: JSON RPC - Blocked by CORS policy

Verfasst: 20 Mär 2025, 09:20
von n.doerrer
Moin,

aktuell wird für Anfragen im opsiconfd
der "Access-Control-Allow-Origin" header auf "{origin_scheme}://{host}:{origin_port}" gesetzt.
Daher wird sich ein browser immer beschweren, wenn der origin ein anderer ist. Außer man deaktiviert CORS-enforcement (--disable-web-security).

Re: JSON RPC - Blocked by CORS policy

Verfasst: 24 Mär 2025, 08:53
von Tjark
Moin n.doerrer,

vielen Dank für deine Antwort.
Ich habe es nun ausprobiert über das deaktivieren von CORS-enforcement über den Parameter --disable-web-security. Leider auch das ohne Erfolg. Selbst mit deaktivierter Web Security scheint die CORS Policy erzwungen zu werden.

Besteht die Möglichkeit den "Access-Control-Allow-Origin" Header anzupassen bzw. zu erweitern um die Adresse meines Webservers?

Mit freundlichen Grüßen
Tjark

Re: JSON RPC - Blocked by CORS policy

Verfasst: 01 Apr 2025, 15:57
von j.schneider
Hallo,

ab opsiconfd-Version 4.3.31.1 kann man den Access-Control-Allow-Origin-Header über die Option "--cors-origin" auf einen beliebigen Wert setzen. Die neue Version ist hier zu finden:

https://software.opensuse.org/download. ... =opsiconfd

Grüße
Jan Schneider