Datei im Netzwerk abrufen

St08

Benutzer
Mitglied seit
27. Mrz 2014
Beiträge
33
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,
ich scheitere gerade an einer vermeintlich einfachen Aufgabe: Ich habe eine XML-Datei auf der Webstation liegen und möchte sie innerhalb des Netzwerks abrufen. Aber es scheitert wohl an der Berechtigung...

Der Reihe nach:
  1. Ich habe auf der Westation ein PHP-Script, dass regelmäßig automatisch ausgeführt wird. Es sammelt im Internet Informationen an einer API ein und legt sie als XML-Datei im Verzeichnis \web ab.
  2. Ich habe im Docker IOBroker laufen und möchte in der Visualisierung des IOBrokers auf die Informationen in der XML-Datei zugreifen.
  3. Im IOBroker läuft ein Javascript, dass per fetch('http://ip-der-diskstation/123.xml') die Daten abruft.
  4. Es kommt die Fehlermeldung "Access to XMLHttpRequest at 'http://ip-der-diskstaion/123.xml' from origin 'http://ip-der-diskstation:8082' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Jetzt habe ich schon versucht, per SSH die Config des NGINX zu ändern, um den Server zu erlauben. Aber da komme ich nicht weiter.

Vielleicht bin ich aber auch auf dem Holzweg.

Gibt es eine einfachere Möglichkeit, meine XML-Datei innerhalb der Diskstation zu übergeben?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.400
Punkte für Reaktionen
5.022
Punkte
544
Den Dateipfad, in dem die Datei liegt, direkt in den Container mounten?
 

St08

Benutzer
Mitglied seit
27. Mrz 2014
Beiträge
33
Punkte für Reaktionen
0
Punkte
6
Ja, das ist eine gute Idee. Darauf bin ich noch nicht gekommen.

Habe ich gerade versucht, aber vielleicht stelle ich mich zu blöd an. Damit kriege ich den IOBroker zum Absturz. :-/

Habe jetzt den Pfad web im Docker in /opt/iobroker/iobroker-data/files/xyz gemountet. Der Ordner ist dort auch zu sehen - aber wenn ich auswähle, stürzt IOBroker ab ("keine Verbindung"), die Visualisierung lässt sich gar nicht mehr laden und zeigt im Anschluss nur noch kryptische Pfade und Dateien...

Ach ja: Und der Ordner xyz ist leer. Habe es mehrfach probiert und ihn auch mal in ander Pfade gemountet. Mache ich was falsch?
 
Zuletzt bearbeitet:

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Zeig doch einfach deine Installation vom Container. Du kannst jeden Ordner mounten. Willst die Datei in einen bestimmten Ordner im Container haben?
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.264
Punkte für Reaktionen
923
Punkte
174
Da dein JavaScript lokal ausgeführt wird und du hier versuchst auf externe Daten zuzugreifen (PC -> NAS) wird es hier sicherlich zu dem besagten CORS-Problem kommen. https://stackoverflow.com/questions...oad-xxx-no-access-control-allow-origin-header

Hast du das JavaScript zufälligerweise in deiner VIS eingebunden? Das wäre jetzt die einzig logische Erklärung hierfür.
Der normale ioBroker-Ansatz wäre hier das Ganze über den Skript-Adapter abzubilden, Datenpunkt beschreiben und dann in der VIS einzubetten.

Du kannst natürlich auch versuchen den Header mit zu übergeben, siehe auch:
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin
https://www.youtube.com/watch?v=Tmib_2sCPww

P.S.: Solche Themen sind im ioBroker-Forum besser aufgehoben.
 

St08

Benutzer
Mitglied seit
27. Mrz 2014
Beiträge
33
Punkte für Reaktionen
0
Punkte
6
Okay, danke für die Antworten.

Ich glaube so langsam übersteigt das doch meine Programmier-Fähigkeiten... :)

Vielleicht gibt es ja auch eine ganz andere Möglichkeit? Ich rufe ja mit einer PHP-Datei Daten von einer API im Web ab und speichere sie als XML. Ich habe mich für die PHP-Variante entschieden, weil ich es nur so geschafft habe, mich beim API-Server per Zertifikatsdatei zu authentifizieren. Und ich dachte, es wäre dann einfach, diese Daten im lokalen Netz beliebig weiterzuverarbeiten, wenn sie ja "schon mal da liegen". Aber ganz so einfach ist es wohl doch nicht...

Ich suche mal im IOBroker-Forum weiter.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.264
Punkte für Reaktionen
923
Punkte
174
Wenn du schon mit PHP experimentierst, könntest du die Daten auch direkt parsen und in eine Datenbank schreiben. Das macht das Abgreifen der Daten in der VIS einfacherer und ist prinzipiell ressourcenschonender. Ersatzweise könntest du es ja auch noch mit dem Parser-Adapter probieren. Den kann man, neben URLs auch mit Dateien füttern. Zum Parsen müsstest du dich notfalls ein wenig mit regEX auseinandersetzen. Das muss jetzt aber kein Drama sein.

Wenn das nicht hilft.. Viele Wege führen nach Rom.. oder ins ioBroker-Forum.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!