fhemweb HEAD request erlauben

Begonnen von justme1968, 25 Mai 2017, 18:18:43

Vorheriges Thema - Nächstes Thema

justme1968

wenn man im tablet ui mit iframe eine externe seite einbindet macht das iframe widget einen HEAD request um die erreichbarkeit der seite zu prüfen.

wenn man die eingebettete seite über fhemweb ausliefert bekommt man nur einen 405 fehler da HEAD nicht erlaubt ist.

mit der folgenden änderungIndex: 01_FHEMWEB.pm
===================================================================
--- 01_FHEMWEB.pm (revision 14370)
+++ 01_FHEMWEB.pm (working copy)
@@ -433,7 +433,7 @@
   my ($method, $arg, $httpvers) = split(" ", $FW_httpheader[0], 3)
         if($FW_httpheader[0]);
   $method = "" if(!$method);
-  if($method !~ m/^(GET|POST)$/i){
+  if($method !~ m/^(GET|POST|HEAD)$/i){
     my $retCode = ($method eq "OPTIONS") ? "200 OK" : "405 Method Not Allowed";
     TcpServer_WriteBlocking($FW_chash,
       "HTTP/1.1 $retCode\r\n" .
wird HEAD erlaubt und das iframe widget funktioniert.

das ganze ist natürlich nicht wirklich korrekt und vollständig, reicht aber für diesen anwendungsfall.

ich bin mir auch nicht sicher ob es eventuell irgendwelche sicherheitsrelevanten seiteneffekte hat.

falls das jemand verneinen kann wäre es schön wenn die änderung eingecheckt wird.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Auf HEAD muss man mit den korrekten Header-Daten, aber ohne Inhalt antworten, mit diesem Patch wird aber der Inhalt auch gesendet. Ich kann den Patch einbauen, aber ich erwarte in ca 2-4 Wochen die ersten Fehlermeldungen, die vermutlich von der Beschreibung nicht ganz trivial auf diese Aenderung zurueckzufuehren sind. Gibt es noch andere Meinungen?


Zitatmacht das iframe widget einen HEAD request
Ich verstehe das so: bei einem <iframe> Tag fuehrt Safari auf dem iPad ein HEAD aus.
Nur aus Neugier: Wozu eigentlich? die Daten muessen normalerweise dargestellt werden, dann kann man gleich ein GET absetzen.

justme1968

#2
ja. das normalerweise nur der header kommen sollte ist klar. die frage ist ob es falsch ist das der rest auch kommt oder würde der standard das sogar her geben.

der head request ist eine besonderheit des tablet ui iframe widget. das wird gemacht um ein fehler icon anzuzeigen statt einer fehlerhaften webseite wenn das einbetten nicht funktioniert. das ganze ist also tablet ui spezifisch.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Da FHEMWEB die Seite auch bei HEAD mit Inhalt zurueckliefern wuerde: kann Tablet-UI nicht gleich ein GET absetzen?