Hallo, ich habe folgendes Problem: Ich möchte Daten via get an einen HTTP Server senden. Wenn ich die direkte IP zum HTTP verwende ( vom Hoster bekommen) dann funktioniert auch alles wie gewünscht. Wenn ich den HTTP connect aber über die url mache, dann gibt es einen HTTP Statuscode 302 zurück. -> OK AT+SHREQ="/p_ss?12345678,01,0c,3c,01,02,0352",1 OK +SHREQ: "GET",302,0 AT+SHRHEAD ERROR Es gibt also eine temporäre Weiterleitung. Da die Länge 0 ist, kann man den response value mit AT+SHREAD nicht auslesen. Und AT+SHRHEAD gibt einen Error. Wie komme ich nun an die IP Adresse der Weiterleitung? Andreas
Sicher, dass das kein http -> https redirect ist? Dann ist die IP die gleiche…
Dennis schrieb: > Sicher, dass das kein http -> https redirect ist? Dann ist die IP die > gleiche… Nein kein HTTPS, ganz sicher! Ist ein "vitueller" server von ionos, ich denke das hat etwas damit zu tun... Andreas
Ich könnte mir gut vorstellen dass der da integrierte HTTP-Stack ziemlich begrenzt in seinen Möglichkeiten und Standardkonformität ist. Solange Du den vollständigen Server (und dessen IP) unter Kontrolle hast mag das angehen. Wenn Du es aber mit gängigen Webhostern zu tun hast wird das schon deutlich schwerer. Vor allem auch weil Du immer mit dem Risiko lebst dass etwas, was heute noch funktioniert, ohne jegliche Ankündigung oder Rollback-Möglichkeit durch ein Update des Hosters gestört wird. Mein Vorschlag daher: Lass deren IP- und HTTP-Stack gut sein und nimm Deinen eigenen. Wähl Dich statt dessen über dieses Mobilfunkmodem per PPP selbst ein und mach das IP und HTTP selbst. Dann hast Du es vollständig selber in der Hand was der Client macht und kannst es bei Bedarf auch selber anpassen. Oder wenn das nicht geht, dann nimm den Server selber in die Hand. Miete Dir eine virtuelle Maschine oder so und bau dort Deinen eigenen Server auf. Den könntest Du z.B. auch als Proxy verwenden über den das beschränkte Modul mit dem eigentlichen Server kommunizieren kann. Da das dann aber offen im Internet hängt - immer das Thema Sicherheit von Anfang an mit bedenken.
:
Bearbeitet durch User
Andreas R. schrieb: > Es gibt also eine temporäre Weiterleitung. Da die Länge 0 ist, kann man > den response value mit AT+SHREAD nicht auslesen. > > Und AT+SHRHEAD gibt einen Error. AT+SHRHEAD gibt es beim 7070 nicht. Header, Body und ein bisschen Metadata sollten mit AT+SHREAD gelesen werden ("SIM7070 SIM7080 SIM7090 Series AT Command Manual", "SIM7070 SIM7080 SIM7090 Series HTTP(S) Application Note"). > Wie komme ich nun an die IP Adresse der Weiterleitung? Erst mal schauen was der Server wirklich antwortet. Sende den gleichen Request vom einem normalen Rechner mit curl und lass dir von curl die Result-Header anzeigene (-i Option) und am besten noch Verbose (-v). Vielleicht noch Wireshark nebenbei laufen lassen. Du suchst den Location: Header in der Antwort. Wenn der da ist, dann spinnt das Modem. Wenn er fehlt habe mal ein Wort mit dem ionos-Support, wie die sich das so vorstellen. Probier auch mal ein Beispiel aus den Application Notes, ob dein Modem überhaupt so funktioniert wie SIMCom behauptet.
Hannes J. schrieb: >> Es gibt also eine temporäre Weiterleitung. Da die Länge 0 ist, kann man >> den response value mit AT+SHREAD nicht auslesen. >> >> Und AT+SHRHEAD gibt einen Error. > > AT+SHRHEAD gibt es beim 7070 nicht. Doch laut SIM7070_SIM7080_SIM7090 Series_AT Command Manual_V1.07 schon ... Header, Body und ein bisschen > Metadata sollten mit AT+SHREAD gelesen werden ("SIM7070 SIM7080 SIM7090 > Series AT Command Manual", "SIM7070 SIM7080 SIM7090 Series HTTP(S) > Application Note"). Das Problem ist das +SHREQ: "GET",302,0 eben anzeigt, das es 0 bytes zu lesen gibt. > >> Wie komme ich nun an die IP Adresse der Weiterleitung? > > Erst mal schauen was der Server wirklich antwortet. Sende den gleichen > Request vom einem normalen Rechner mit curl * Request completely sent off < HTTP/1.1 302 Found < Content-Type: text/html < Content-Length: 0 < Connection: keep-alive < Keep-Alive: timeout=15 < Date: Tue, 07 Jan 2025 15:12:09 GMT < Server: Apache < Cache-Control: no-cache Das hier scheint das Problem zu sein : Content-Length: 0 > > Du suchst den Location: Header in der Antwort. Wenn der da ist, dann > spinnt das Modem. Wenn er fehlt habe mal ein Wort mit dem ionos-Support, > wie die sich das so vorstellen. > > Probier auch mal ein Beispiel aus den Application Notes, ob dein Modem > überhaupt so funktioniert wie SIMCom behauptet. Tut es ja, wenn ich die IP Adresse direkt eingebe. Andreas
Gerd E. schrieb: > Mein Vorschlag daher: Lass deren IP- und HTTP-Stack gut sein und nimm > Deinen eigenen. Wähl Dich statt dessen über dieses Mobilfunkmodem per > PPP selbst ein und mach das IP und HTTP selbst. Auf dem Ziel uC wird ein TCP/IP Stack auf keinen Fall passen. Wir reden hier von kleinen IOT Geräten. > vollständig selber in der Hand was der Client macht und kannst es bei > Bedarf auch selber anpassen. Das Problem, bleibt doch dann das gleiche, oder nicht? Über die DNS Anfrage gibt es eine IP von dem hoster, und wenn die aufgerufen wird, dann gibt es doch diese Weiterleitung. Oder ist das nur bei HTTP Servern so? > > Oder wenn das nicht geht, dann nimm den Server selber in die Hand. Miete > Dir eine virtuelle Maschine oder so und bau dort Deinen eigenen Server > auf. Genau das haben wir ja. Andreas
Andreas R. schrieb: >> AT+SHRHEAD gibt es beim 7070 nicht. > Doch laut SIM7070_SIM7080_SIM7090 Series_AT Command Manual_V1.07 schon Dann viel Spaß heraus zu finden ab welcher Firmware-Version das so ist und notfalls ein Firmware-Update von SIMCom zu bekommen. > * Request completely sent off > < HTTP/1.1 302 Found > < Content-Type: text/html > < Content-Length: 0 > < Connection: keep-alive > < Keep-Alive: timeout=15 > < Date: Tue, 07 Jan 2025 15:12:09 GMT > < Server: Apache > < Cache-Control: no-cache > > Das hier scheint das Problem zu sein : > Content-Length: 0 Nein, ist es nicht. Nochmal, für eine automatische Redirection wird der Location: Header benötigt. Der ist zwar optional, "SHOULD" laut RFC, aber ohne den wird die Redirection "schwierig". Wo hin gehen wenn nicht gesagt wird wohin? Der Header scheint hier zu fehlen. Der Body ist davon unabhängig. Das es hier gar keinen gibt (Content-Length: 0) ist unerheblich, er würde sowieso ignoriert werden: Es darf, aber muss nicht, eine URL im Body stehen, und dann wäre Content-Lenght > 0. Aber diese URL müsste ein Client mit einer Heuristik im Body suchen und entsprechend des Content-Type raus parsen (hier HTML). Denn der Body sollte für Menschen lesbar sein. Da kann also alles Mögliche an Schwafel-Text um die neue URL (und weitere URLs) stehen. Deshalb ignoriert man bei einer Maschine-zu-Maschine Kommunikation (IoT, etc.) den Body bei 302. Wenn keiner da ist ist das auch OK.
:
Bearbeitet durch User
Andreas R. schrieb: > Request completely sent off > < HTTP/1.1 302 Found > < Content-Type: text/html > < Content-Length: 0 > < Connection: keep-alive > < Keep-Alive: timeout=15 > < Date: Tue, 07 Jan 2025 15:12:09 GMT > < Server: Apache > < Cache-Control: no-cache > > Das hier scheint das Problem zu sein : > Content-Length: 0 Das ist schon richtig, es gibt ja keinen menschenlesbaren Inhalt. Aber Du hast ein Problem mit der Apache-Config oder .htaccess-Datei oder einen Proxy, der den Location-Header wegfiltert.
Andreas R. schrieb: >> Oder wenn das nicht geht, dann nimm den Server selber in die Hand. Miete >> Dir eine virtuelle Maschine oder so und bau dort Deinen eigenen Server >> auf. > Genau das haben wir ja. Ok, also eine virtuelle Maschine unter Deiner vollen Kontrolle und kein shared hosting oder vom Hoster verwalteter Webserver? Dann könntest Du ja einfach mal auf Deinem virtuellen Server ein tcpdump machen und ne .pcap rausschreiben während Du den Request von dem SIM7070G machst. Das kannst Du dann hinterher auf Deinem PC im Wireshark anschauen und dann siehst Du genau was an Daten übertragen wurde. Im Vergleich zu Tests mit curl etc. siehst Du genau was bei dem Request vom SIM7070G passiert und simulierst das nicht nur.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.