URL / String Probleme mit GET Favicon.ico HTTP/1.1 Chrome Browser

Guten Morgen Community, :slight_smile:

ich benötige mal Hilfe....

Ich habe einen Webserver erstellt mit einem einzigen einfachen Programm, womit ich Eingabefelder abfrage und sie per "GET" Befehl im Arduino als String und Substring auswerte.
Dabei ist mir aufgefallen das die URL die Übertragen wird als String, 2 mal gesendet wird.
Einmal bekomme ich den String den Ich brauche, und danach kommt noch der String:
GET /favicon.ico HTTP/1.1

Die Frage ist warum kommt der und wie kann ich den nicht senden lassen? Bzw will ich nicht das er mir meine Substrings zerstört.

ArduinoHTMLmitInt.ino (7.2 KB)

Das Favicon fordert der Browser an. Also kannst Du nur dort etwas ändern. Schau mal in der config, ob da was mit favicon steht.
Beim Firefox wären es in der about:config die Werte browser.chrome.favicons und browser.chrome.site_icons

Gruß Tommy

Danke Tommy,
du bist immer eine gute hilfe :)!

Habe es leider nicht gefunden, aber ich verusche jetzt den String zu Unterdrücken. Also den zweiten, indem ich eine If Be3dingung mit einem Anderen String machen und ihn suchen lasse.

Sozusagen: If String1 = startwith GET /favicon ;
then String1 ="";
If String 1 = startswith GET /URL.....
then .......

Das müsste glaube ich funktionieren.

Vielen Dank nochmal.

Ganz prinzipiell sollte ein Server machen, was ein Client von ihm verlangt.
Zumindest irgendwie reagieren.

In deinem Fall eben auf "falsche" Anfragen mit einer Fehler-Antwort reagieren. ( 404 Not Found )

Klar ist Fehler-Behandlung oft aufwendiger als die eigentliche Logik, zumal wenn es nur ganz wenige sinnvolle Anfragen gibt, aber mehr falsche/unerwartete als man sich vorstellen kann.

also ich würde auch den Server etwas robuster machen und zunächst auswerten, was der Client anfragt und bei Seiten die der Server nicht können soll, eine 404 liefern damit der Client dennoch eine saubere Antwort auf seinen Request bekommt.

was mir sonst noch auffällt wie geht's dir mit dem RAM am Uno(?)
Ist dir bewusst, dass du die meisten Teile des Webservers in den Flash auslagern könntest und so wertvollen RAM sparen kannst?
Auch solltest du versuchen die Client.prints zu reduzieren, da diese die zu übertragenden Bytes aufblähen.

nur mal rasch fürn ersten Abschnitt

          client.print  (F("HTTP/1.1 200 OK\n"
                           "Content-Type: text/html\n"
                           "\n"
                           "<HTML>\n" 
                           "<HEAD>\n" 
                           "<TITLE>Drehmoment Anlage</TITLE>\n" 
                           "</HEAD>\n"));

das bringt mit der Ethernet.h library fast 100Byte die nun vom RAM im Flash verschoben wurden:

alt:

Der Sketch verwendet 13732 Bytes (42%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 1463 Bytes (71%) des dynamischen Speichers, 585 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

neu:
Der Sketch verwendet 13678 Bytes (42%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 1367 Bytes (66%) des dynamischen Speichers, 681 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.