NEWS
http (GET) Aufruf mit username:password@ funktioniert nicht
-
@codierknecht Wenn es so im Browser geht, ist es ja einfach nur Basic-Authentication. Das klappt so auch mit Blockly.
Mal den Verbose-Mode im Script aktivieren. Dann sieht man mehr was genau gesendet wird und ob etwas zurückkommt.
-
@haus-automatisierung könnte/wäre/würde so ein Gerät vielleicht eventuell möglicherweise den User Agent prüfen?
-
@homoran Der User-Agent ist ja nur ein separater HTTP-Header und muss nichtmal übermittelt werden. Eine API würde den Agent-Header (hoffentlich) nie prüfen oder validieren.
Dennoch übermittelt der JavaScript-Adapter bei httpGet einen Agent, weil manche damit ja auch Webseiten parsen usw. Siehe
-
@haus-automatisierung sagte in http (GET) Aufruf mit username:password@ funktioniert nicht:
Wenn es so im Browser geht, ist es ja einfach nur Basic-Authentication. Das klappt so auch mit Blockly.
Es könnten aber vielleicht bestimmte Sonderzeichen Ärger machen. Wird der Kram von httpGet auch URL-codiert?
-
@arumpel sagte in http (GET) Aufruf mit username:password@ funktioniert nicht:
Wenn ich die URL aber mit copy und paste in den Brower kopiere und aufrufe klappt es.
hast du dich in dem Browser schon mal manuell authentifiziert?
oder andersherum:
klappt das auch im Inkognito-Tab? -
@haus-automatisierung sagte in http (GET) Aufruf mit username:password@ funktioniert nicht:
Eine API würde den Agent-Header (hoffentlich) nie prüfen oder validieren.
Hatte ich auch schon. Musste dem Request dann einen unverfänglichen Agenten "unterjubeln"
-
@codierknecht sagte in http (GET) Aufruf mit username:password@ funktioniert nicht:
Es könnten aber vielleicht bestimmte Sonderzeichen Ärger machen.
Alles Mutmaßungen und bringt ja niemanden weiter. URL Escaping muss man natürlich selbst machen.
Aber all das würde man im Log des Verbose-Mode ja sehen... -
@haus-automatisierung
Danke für die rege Beteiligung. Ich hoffe ich habe das richtige Log was Ihr sehen wollt. Geändert habe ich darin nur die dynamische DNS Adresse und username sowie passwort. Das sind aber alles nur normale Kleinbuchstaben im Original.javascript.0 09:35:24.768 info script.js.BMS: Ändere BMS SOC
javascript.0 09:35:24.769 info script.js.BMS: httpGet(config={"method":"get","url":"http://dynamischedns.my.to:4718/set?soc=2","responseType":"text","responseEncoding":"utf8","timeout":60000,"auth":{"username":"username","password":"passwort"},"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0"}})
javascript.0 09:35:24.778 info script.js.BMS: getState(id=mqtt.0.BMS.Pack_Cell_Low_Voltage, timerId=undefined) => {"val":3.169,"ack":true,"ts":1745307321735,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1745307305763}
javascript.0 09:35:24.778 info script.js.BMS: sendTo(instance=telegram.0, cmd=send, msg={"text":"Akkustand kritisch! Geringste Zellenspannung: 3.169V"}, hasCallback=false)
javascript.0 09:35:25.979 info script.js.BMS: httpGet(url=http://username:passwort@dynamischedns.my.to:4718/set?soc=2, responseTime=1210ms)
javascript.0 09:35:25.980 info script.js.BMS: 401 -
@homoran
Also im Chrome Inkognito Tab wenn ich die URL reinkopiere sagt er:dynamischedns.my.to unterstützt keine sichere Verbindung
Du siehst diese Warnung, weil diese Website kein HTTPS unterstützt und du den Inkognitomodus nutzt. Weitere Informationen zu dieser Warnung...Die URL die ich gepasted habe war aber nur http://... also ohne das s
Wenn ich es im Firefox Broswer im privaten Fenster mache klappt es.
Dann kommt ein message received vom Device zurück und der SOC wurde per Webhook geändert. -
@arumpel sagte in http (GET) Aufruf mit username:password@ funktioniert nicht:
Die URL die ich gepasted habe war aber nur http://... also ohne das s
war das auch hinterher noch so?
die Browser ändern das je nach Einstellungen eigenständig ab. -
Im Chrome habe ich es mehrfach probiert. Wenn ich paste mache und da http://... drin steht kommt die Fehlermeldung das kein HTTPS unterstützt wird. In der Adresszeile fehlt aber der Zusatz http:// oder auch https:// komplett, nur der Rest der Adresse steht noch drin.
Trotzdem funktioniert es wenn ich es im Firefox im privaten Fenster eingebe. Das Device gibt dann eine Rückmeldung und der Webhook hat funktioniert.
Nur eben in Blockly mit Get Auffruf funktioniert das nicht. Ich kann so halt nichts automatisieren.
-
@arumpel Was ist das für ein Server, welcher unverschlüsselt im Internet hängt? Da kann ja jeder dazwischenliegende Hop mitlesen.
Ist es Dein eigener, dann schalte die Verschlüsselung ein.
Es gibt noch den Parameter validateCertificate
httpGet( URL, { validateCertificate: false, timeout: 2000, responseType: 'arraybuffer' }, async (err, response) => { ... ... ...
wie das in Blockly aussieht, weiß ich allerdings nicht. Auch nicht, ob Dir das weiterhilft.
In Chrome zeigt er schon das Protokoll an. Dafür muss man in die Adresszeile reinklicken. Die Screenshots sind zwar vom Vivaldi, gilt aber auch für Chrome:
-
@peterfido
Es ist nur ein kleiner Wifi ESP welcher ein PV Akku BMS ausließt um die Werte zu übermitteln. Man kann auch einen SOC Wert setzen, das ist eben ab und an erforderlich wenn die Batterie durch Eigenentladung ziemlich leer ist wenn lange nicht geladen wurde. Ich hab die Software für das Ding nicht programmiert, will nur den Befehl automatisieren.Ja wenn ich in die Adressleiste mit Rechtklick klicke und vollständige URL Anzeigen wähle dann steht die Adresse mit http wie im Versuch mit Paste drin. Ich muss dann auf trotzdem weiter zur unsicheren Seite klicken dann geht der Befehl auch. Nur wenn Blockly das aufruft irgendwie nicht. Ich weiß nicht ob der Programmierer von dem Teil da vielleicht auch irgendwelche Fehler drin hat die es per Blockly unmöglich machen. Es dauert manchmal sehr lange bis das Device antwortet aber ich habe ja schon einen Timeout von 60s gesetzt.