HttpUtils_NonblockingGet - Port der URL nicht in HTTP-Header Host

Begonnen von benzht, 13 Januar 2017, 21:39:28

Vorheriges Thema - Nächstes Thema

benzht

Hallo,

Vielen Dank für eure Arbeit an FHEM!

Ich bin auf ein Problem bei der Funktion HttpUtils_NonblockingGet gestossen.
Wenn ich als Adresse url -> 'http://www.example.com:18080/path/path/path im Hash angebe, dann erscheint im HTTP Header lediglich
Host: http://www.example.com
und nicht
Host: www.example.com:18080

Damit bekomme ich Probleme weil der OpenId-Server, mit dem ich da rede, den Eintrag des Host-Headers in sein signiertes Token einbaut und damit das Token vom Server nicht mehr akzeptiert wird (www.example.com != www.example.com:18080).

Ich habe mich in HttpUtils.pm umgesehen ob ich hierfür gleich auch einen Patch liefern kann, aber ich fürchte, dass ich die Seiteneffekte und Abhängigkeiten
nicht so schnell durchschaue.

Die relevante Stelle ist in Zeile 318 der aktuellen Version (svn 12740):
   $hdr .= "Host: $hash->{host}\r\n";
Hier sollte der Port angehängt werden so einer in der Ziel-URL angegeben ist.

Hoffentlich kann jemand mit mehr Kompetenz in HttpUtils.pm hier einen Patch für bauen?

Vielen Dank im Voraus

    Hartmut
Ich arbeite u.a. für SmartSigns Solutions. SmartSigns.nl setzt FHEM ein als EnOcean-Gateway ein um die Belegung von Konferenzräumen und flexiblen Arbeitsplätzen zu erfassen.

CoolTux

Hallo Hartmut,

Bitte verschiebe Dein Thread mal nach Anfängerfragen. Da liest Rudi bisschen mit.

Kurz zu Deinem Anliegen.
Persönliche finde ich nicht das Host den Port beinhalten sollte. Das wäre in meinen Augen techn. gesehen eine fehlerhafte Aussage.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

benzht

Zitat von: CoolTux am 13 Januar 2017, 21:50:49
Bitte verschiebe Dein Thread mal nach Anfängerfragen. Da liest Rudi bisschen mit.

Kurz zu Deinem Anliegen.
Persönliche finde ich nicht das Host den Port beinhalten sollte. Das wäre in meinen Augen techn. gesehen eine fehlerhafte Aussage.

Danke für die Reaktion. Ich habe hier geposted weil HttpUtil in MAINTAINER.txt auf die Gruppe Automatisierung weist. Aber ich versuche gleich mal, den Thread zu verschieben.

Der Port gehört da laut W3C schon hin (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html; Hervorhebung von mir):
Zitat
14.23 Host

The Host request-header field specifies the Internet host and port number of the resource being requested, as obtained from the original URI given by the user or referring resource (generally an HTTP URL,

as described in section 3.2.2). The Host field value MUST represent the naming authority of the origin server or gateway given by the original URL. This allows the origin server or gateway to differentiate between internally-ambiguous URLs, such as the root "/" URL of a server for multiple host names on a single IP address.

       Host = "Host" ":" host [ ":" port ] ; Section 3.2.2

A "host" without any trailing port information implies the default port for the service requested (e.g., "80" for an HTTP URL).

Grüße
Ich arbeite u.a. für SmartSigns Solutions. SmartSigns.nl setzt FHEM ein als EnOcean-Gateway ein um die Belegung von Konferenzräumen und flexiblen Arbeitsplätzen zu erfassen.

CoolTux

Zitat von: benzht am 13 Januar 2017, 22:49:47
Der Port gehört da laut W3C schon hin (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html; Hervorhebung von mir):
Grüße

Das ist interessant. Wusste ich noch nicht. Danke für die Info.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Ab sofort wird fuer Non-Standard-Ports (kein 80 / 443) :port hinzugefuegt.

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net