Support Request #14214
closed[EBPSSD-1329] RPC via JavaScript in Browser
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 auszulesenFirefox 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
Updated by hidden about 3 years ago
- Status changed from New to In Progress
- Customer set to ELEKTROBIT
- Department set to SUPPORT
- Topic set to ADTF::RPC
Updated by hidden about 3 years ago
Hi Anja,
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
Grüße,
Martin
Updated by hidden about 3 years ago
Hallo Anja,
benötigst du noch weitere Unterstützung? Ansonsten würden wir das Ticket schließen.
Grüße
Margarete
Updated by hidden about 3 years ago
- Status changed from In Progress to Customer Feedback Required
Updated by hidden about 3 years ago
Hallo Margarete,
ich habe noch keine Rückmeldung bekommen.
Grüße,
Anja
Updated by hidden about 3 years ago
Hallo,
das ticket kann geschlossen werden. Danke.
Viele Grüße,
Anja
Updated by hidden about 3 years ago
- Project changed from 7 to Public Support
- Description updated (diff)
- Status changed from Customer Feedback Required to To Be Closed
- Private changed from Yes to No
- Resolution set to Solved Issue
- Affected Products ADTF 3.11.2 added