GELÖST: Problem bei Steuerung einer Squeezebox über ein iframe (CORS?)

Begonnen von FHEm2005, 16 November 2015, 18:01:07

Vorheriges Thema - Nächstes Thema

FHEm2005

Ich habe lange überlegt, wo ich am besten diesen Thread platziere. Ich vermute es ist kein für Multimedia spezifisches Problem. Ich versuche es mal darzustellen.

Der Squeezeboxserver (LMS) hat auf seiner Website über dem Einschaltknopf eine Möglichkeit die gesamte Steuerung in ein gesondertes Fenster auszulagern. Der Link dahin ist bei mir http://192.168.2.14:9002/status_header.html?player=00:00:22:22:77:11 . Wenn ich diesen Link als URL eingebe, wird mir das Steuerungsfenster (abgesehen von der Größe) astrein und funktionsfähig in Firefox dargestellt.

Was liegt näher als sich diesen Frame in FHEM anzeigen zu lassen:
define web_SBT.Wz weblink iframe http://192.168.2.14:9002/status_header.html?player=00:00:22:22:77:11
Ergebnis: ich bekomme zwar ein Teil dargestellt, aber rudimentär und nicht funktionsfähig.

Dann habe ich mal nach der Fehlerquelle gesucht, und habe im JS-Monitor 3 Fehler gefunden, die mit dem  Server zusammenhängen könnten.

Error: Permission denied to access property "SqueezeJS"                    js.html:42:1
Error: Permission denied to access property "toString"                        js.html:17:2646
TypeError: SqueezeJS.UI is undefined                                          status_hea...:185:35

Beim  letzten Fehler wird auf den Link verwiesen.


2. Versuch über FTUI gleichzeitig JS-Monitor mitlaufen lassen.

Hier kam der Fehler:
"Error trying to load http://192.168.2.14:9002/status_header.html?player=00:00:22:22:77:11:" error -  jquery.min.js line 2 > eval:53:1
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://192.168.2.14:9002/status_header.html?player=00:00:22:22:77:11. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).

Einlesen in Google und dann im Webinterface
define WEB FHEMWEB 8083 global
das Attribut
attr WEB CORS 1
gesetzt. Restart.

Ergebnis: Keine Änderung.
1. Eine Zeile mit Access-Control-Allow-Origin finde ich nicht in den Webseiten (Sourcecode) aus dem 8083er Interface.
2. Kann es sein, dass im Server ebenfalls die Zeile eingetragen werden muss? Wenn ja wo und wie?

Ich bin mit meinem Latein am Ende, weil ich zu wenig über CORS weiß und das Gelesene nicht wirklich im Einzelnen kapiere.

Weiß jemand Rat?

Gruß Eberhard
   
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FHEm2005

Jetzt ja.  8) 8)

Mit IE: Ergebnis: kein Unterschied zum Firefox.

Schönen Abend
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

Hat denn Niemand einen Tipp für mich?

Gruß
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

#4
Bald jährt sich dieses Thema bei mir. Leider hat sich bisher niemand zu diesem Thema gemeldet. Die Community hat sich inzwischen verändert: Sie ist größer geworden, das Gesammtwissen hat zugenommen und vielleicht ist das Thema für den Einen oder Anderen interessant geworden. Also viele Gründe dieses Thema nach vorne zu bringen.

Wer kann zu diesem Thema etwas beisteuern?

Viele Grüße Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

ChrisD

Hallo,

Das Problem liegt bei CORS, es muss aber beim LMS aktiviert werden. Dazu gibt es hier ein Plugin für den LMS.

Grüße,

ChrisD

FHEm2005

#6
Hi Chris,

Du hast meinen Tag gerettet. Es klappt. "Lustig" ist lediglich, dass die Dateien des Plugins nach dem Restart verschwinden; die Funktion aber übernommen wurden.

Vielen Dank an Dich.

Damit alle des Forum partizipieren können hier meine Implementierung:

Internals:
   CFGFN
   DEF        iframe http://192.168.2.46:9002/status_header.html?player=00:04:20:aa:bb:cc
   LINK       http://192.168.2.46:9002/status_header.html?player=00:04:20:aa:bb:cc
   NAME       web_sb3.Bu
   NR         125730
   STATE      initialized
   TYPE       weblink
   WLTYPE     iframe
Attributes:
   htmlattr   style="border-style: solid; border-width: 2px; border-radius: 11px; background-color: blue; width: 400px; height: auto; border-color: #287D17;"
   room       Squeezebox


Das Ergebnis ist unten zu sehen. Eine einfachere Minmalsteuerung einer Squeezebox kenne ich nicht. An den Hintergrund komme ich nicht dran, weil der vom LMS übermittelt wird. Den Rahmen drumrum hab ich ein wenig aufgehübscht. Die Höhe des Elementes ist auch bei mir zu flach gewesen, deshalb Höhe:auto. Die Breite wurde etwas vergrößert, damit die Steuerelemente einen gleichen Abstand zueinander haben.

Viele Grüße
Eberhard

Edit: Ich habe das Objekt an den Style dark angepasst. deshalb:

attr <sb-device> htmlattr style="box-shadow: 5px 5px 5px #000;border-style: solid; border-width: 1px; border-radius: 11px; width: 400px; height: 156px; border-color: #white;"
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

kvo1

Hallo Eberhard,

danke, bin auf Deinen Beitrag eher zufällig gestoßen! Werde es mal einbauen bei Gelegenheit !

Gruß
Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB