Project

General

Profile

Actions

Support Request #14214

closed

[EBPSSD-1329] RPC via JavaScript in Browser

Added by hidden about 3 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Customer:
ELEKTROBIT
Department:
SUPPORT
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Topic:
ADTF::RPC
FAQ Links:

Description

Supportanfrage

ich habe eine Anfrage zu der ich in der Doku auch nicht viel gefunden habe:

ADTF3 hat einen RPC Mechanismus, damit adtf_control mit adtf_launcher kommunizieren kann.
Dieser RPC Mechanismus basiert auf jsonrpc-cpp, welcher wiederum http POST benutzt.
Meine Hoffnung: http POST kann auch von einer simplen Website genutzt werden, um z.B. das Runlevel der ADTF Instanzen anzuzeigen und das Runlevel zu ändern.

Leider ist die Dokumentation dazu etwas dünn und nach ersten
Versuchen klappt die Kommunikation noch nicht.

Grunsätzlich habe ich versucht in einer lokalen html-Datei
mit JavaScript XMLHttpRequest zu nutzen, um das Runlevel auszulesen

Firefox liefert mir z.B: folgende Fehlermeldung:
Cross-Origin
Request Blocked: The Same Origin Policy disallows reading the remote resource
at http://localhost:8000/system. (Reason: CORS
request did not succeed).

Frage:
Gibt es Einschränkungen, was mit simplen HTML5/JavaScript möglich ist? (würde im ersten Schritt Abhängigkeiten zu PHP oder Bibliotheken vermeiden wollen, um eine einfache Inbetriebnahme zu ermöglichen)
Wie kann/muss ich den RPC-Server konfigurieren, damit die Kommunikation mit dem Browser klappt? (Ggf. sind hier aus Sicherheitsgründen Features deaktiviert)

Er nutzt ADTF 3.11.2. Er probierte auch die Python basierte Communication in den Beispielscripten:

just tried python and it simply worked:
import requests
url = 'http://localhost:8000/system'
myobj = {'id': '1', 'jsonrpc': '2.0', 'method': 'GetRunlevel'}

x = requests.post(url, json = myobj)
print(x.text)

However it would be cool having something which just need a browser without any further dependencies. Just HTML5, JavaScript

Gibt es eine Möglichkeit ADTF simple über den Browser steuern zu können?

Lösung

Das klappt auch mt einem Browser, mann muss allerdings CORS zulassen. Browser lassen eine Website standardmäßig keine Verbindung zu einem anderen Server aufbauen. Das kann man entweder dadurch lösen, dass man die Datei über einen Webserver ausspielt und entsprechende Header setzt oder aber man installiert sich eine Browser Erweiterung und deaktiviert damit die CORS Einschränkungen, z.b. https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf

Actions

Also available in: Atom PDF