Forum: Mikrocontroller und Digitale Elektronik HTML vermutlich Header Problem ?


von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Geschätztes Forum,

mein kleiner Webserver sendet folgende HTML-Datei:

<!DOCTYPE html>
<html>
<head>
<title>WEBSERVER</TITLE></HEAD>
<body><BODY BGCOLOR='#FFFFFF'>
HALLO
</body></html>


Bei den beiden Android Geräten (1+2) wird die HTML Datei angezeigt,
nur die beiden PC (3+4), mit dem dem Internet-Explorer 8 bzw. 9, kommen
damit nicht zurecht.

Worin liegt die Ursache?


Beim Verbindungsaufbau werden folgende Daten zum Web-Server gesendet:

(1) Smartphone-A:
GET / HTTP/1.1
Host: 192.168.0.90
Connection: keep-alive
Accept: 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0 
.8
User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T815 
Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 
Chrome/38.0.2125.102 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4


(2)Smartphone-B:
GET / HTTP/1.1
Host: 192.168.0.90
Connection: keep-alive
Accept: 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0 
.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G925F/XXS3DPDF 
Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 
Chrome/44.0.2403.133 Mobile Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4


(3)PC WindowsXP, Internet Explorer 8:
GET / HTTP/1.1
Accept: */*
Accept-Language: de
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; 
Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 
3.5.30729; .NET4.0C)
Accept-Encoding: gzip, deflate
Host: 192.168.0.90
Connection: Keep-Alive



(4)PC Windows7, Internet Explorer 9:
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: de-DE
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; 
Trident/5.0)
Accept-Encoding: gzip, deflate
Host: 192.168.0.90
Connection: Keep-Alive




Danke

Bernhard

von Trenntrafo (Gast)


Lesenswert?

Was für Header sendet der Webserver denn zurück? Was genau ist das 
Problem, wird die Seite nur nicht angezeigt, keine Daten übertragen, 
Server antwortet nicht? :)

von Bernhard S. (bernhard)


Lesenswert?

>Was für Header sendet der Webserver denn zurück?

diesen:

<!DOCTYPE html>
<html>
<head>
<title>WEBSERVER</TITLE></HEAD>
...


Der Windows Explorer 8+9 meldet:

"Verbindung wird hergestellt"

"Webseite gefunden, warte auf Antwort"


Anmerkung:

Die "Test.htm" (s.oben) können die Windows Explorer 8+9 problemlos 
öffnen.

von Zeno (Gast)


Lesenswert?

Ich meine ich hatte mal ein Problem mit <!DOCTYPE html>. Laß das mal 
weg. Sicher bin ich mir aber nicht mehr, da es schon zu lange her ist.

von Daniel A. (daniel-a)


Lesenswert?

Bernhard S. schrieb:
>>Was für Header sendet der Webserver denn zurück?
>
> diesen:
>
> <!DOCTYPE html>
> ...

Das ist nicht der HTTP Response Header, sondern der Response 
body/Content.
https://en.m.wikipedia.org/wiki/HTTP_message_body

Du kannst telnet oder netcat nutzen, um manuell einen Request 
einzugeben, und die volständige response zu sehen. Man könnte auch z.B. 
mit wireshark nachsehen, wer was sendet.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> <!DOCTYPE html>
> <html>
> <head>
> <title>WEBSERVER</TITLE></HEAD>
> <body><BODY BGCOLOR='#FFFFFF'>
> HALLO
> </body></html>

Und ich dachte immer, MEIN HTML wäre in meiner Anfangszeit Scheiße 
gewesen.

- doppeltes Body-Tag
- Formatierung unter aller Sau
- keine Angaben über Doctype, Kodierung, Zeichensatz usw.

von Daniel A. (daniel-a)


Lesenswert?

Ben B. schrieb:
> - keine Angaben über Doctype, Kodierung

Der korrekte Doctype für HTML5 ist vorhanden. Die Zeichenkodierung 
könnte im Content-Type header festgelegt worden sein, welchen wir hier 
nicht sehen.

von Pandur S. (jetztnicht)


Lesenswert?

lass den <BODY BGCOLOR='#FFFFFF'>
auch mal weg. Meines Erachtens sollten Konstanten in ""
gesetzt sein.

Also einfach :

<html>
<head> <title> Ja - titel </title> </head>
<body>
Hallo
</body>
</html>

von Clemens L. (c_l)


Lesenswert?

Daniel A. schrieb:
> Du kannst telnet oder netcat nutzen, um manuell einen Request
> einzugeben, und die volständige response zu sehen.

Oder einfach "wget -S http://192.168.0.90/";.

von Jobst M. (jobstens-de)


Lesenswert?

Daniel A. schrieb:
> Die Zeichenkodierung
> könnte im Content-Type header festgelegt worden sein, welchen wir hier
> nicht sehen.

Solange man bei 7-Bit ASCII bleibt, ist die auch egal ... ;-)

Bernhard S. schrieb:
> HALLO



Gruß

Jobst

von Stefan F. (Gast)


Lesenswert?

Betreibst du die LED's etwa ohne Vorwiderstände?

von Bernd Brot (Gast)


Lesenswert?

- unterschiedliche GROSS/kleinschreibung: <title>WEBSERVER</TITLE>
und
- doppelter/falscher body

verhindert das Anzeigen hier - die anderen beiden Geräte sind da 
toleranter...

von Michael U. (amiga)


Lesenswert?

Hallo,

Firefox und IE11 zeigen den html-Code trotz des doppelten <body> 
problemlos an.
Griß-/Kleinschreibung bei den TAGs ist zwar unschön, würde mich aber 
wundern, wenn das eine Rolle spielt.
Ich würde eher auf ein Problem im HTTP-Request-Header tippen.
Für Firefox gibt es da ein nettes AddOn: Live HTTP Headers
Hat mir schon öfter weitergeholfen.

Gruß aus Berlin
Michael

von shark (Gast)


Lesenswert?

wireshark - wirkt in solchen fällen oft wunder ;-)
(abgesehen von den schon angemerkten html-geschichten)
weiteres nützliches hilfsmittel: curl

und vergiss den ie8 und 9. die sind dermaßen alt (und abgekündigt), dass 
sie schon wahrscheinlich schon ramses II im einsatz hatte - dafür 
irgendeinen gedanken verschwenden lohnt sich nicht. bei uns in der firma 
gibts bei den teilen nur mehr die auskunft "pech gehabt, da machen wir 
auch für viel geld nix"

von Thosch (Gast)


Lesenswert?

Mach deine HTML Datei erst mal standardkonform.

Hier gibts den offiziellen Validator vom W3C:
https://validator.w3.org/

Wenn der die Datei erfolgreich validiert, kannste weitermachen...

von Bernhard S. (bernhard)


Lesenswert?

Danke für Eure hilfreichen Antworten :-)

>Ich würde eher auf ein Problem im HTTP-Request-Header tippen.

Das vermute ich jetzt auch, werde mich diesbezüglich noch etwas belesen 
müssen.

>wireshark - wirkt in solchen fällen oft wunder

stimmt, nutze ich auch

"test.htm" wird exakt so vom Webserver gesendet (TCP)

>Das ist nicht der HTTP Response Header, sondern der Response
>body/Content.
>https://en.m.wikipedia.org/wiki/HTTP_message_body

>https://validator.w3.org/

>doppelter/falscher body
>verhindert das Anzeigen hier - die anderen beiden Geräte sind da
>toleranter...


>Du kannst telnet oder netcat nutzen

>doppeltes Body-Tag
>Formatierung unter aller Sau
>keine Angaben über Doctype, Kodierung, Zeichensatz usw.


Danke für die Tipps



>Betreibst du die LED's etwa ohne Vorwiderstände?

Nein, diese sind in den 5V LED's schon integriert

von Carl D. (jcw2)


Lesenswert?

MS wurde früher dafür geprügelt, daß IE sich nicht an die Standards 
hält. Ergebnis war penibles an den Standard halten, das mit diesem 
hinger..zten HTML Derivat einfach nur macht, was nötig ist: Es wegen 
diverser Fehler ignorieren.
Bin bin sicher kein Fan dieser Firma, aber da haben sie schon recht.

von Bernhard S. (bernhard)


Lesenswert?

Auch ein kleines Tool:

http://web-sniffer.net/app.html

von Harry L. (mysth)


Lesenswert?

Die Idee, fehlerhaften HTML-Files mit Wireshark zu Leibe zu rücken lese 
ich hier auch zum 1. mal...
...aber man lernt ja nie aus...

Der einzige sinnvolle Hinweis wurde geflissentlich ignoriert:

Thosch schrieb:
> Hier gibts den offiziellen Validator vom W3C:
> https://validator.w3.org/
>
> Wenn der die Datei erfolgreich validiert, kannste weitermachen...

zumal einem diese Seite ganz genau sagt, wo das Problem ist, und wie das 
zu lösen ist.

kopfschüttel

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ein Versuch mit einem Response Header.

Die HTML-Seite wird vom Internet Explorer 8+9 und von den Android 
Geräten angezeigt.

Ihr habt bestimmt noch Ideen, was man verbessern könnte.


Ich suche einen einfachen und kleinen Response Header.

Mich stört momentan die Content-Length Angabe, geht es auch ohne?



PS: Bitte verzeiht meine Unwissenheit, ich bin ein absoluter 
HTML-Anfänger.

von Daniel A. (daniel-a)


Lesenswert?

Bernhard S. schrieb:
> Mich stört momentan die Content-Length Angabe, geht es auch ohne?

Ja, aber dann muss man HTTP/1.0 nehmen und die Verbindung nach dem 
Senden Schlissen.

Edit: Ich würde die Content-Length Angabe einfach generieren lassen.

von Harry L. (mysth)


Lesenswert?

Mensch Leute!
Wenn ihr zu blöd seid, nen HTML-Rumpf zu erzeugen, dann speichert doch 
einfach euren Rotz im Word als HTML und fertig!

Das kann man ja nicht mit ansehen!

von Stefan F. (Gast)


Lesenswert?

>  speichert doch einfach euren Rotz im Word als HTML und fertig!

Tolle Idee. Also ob Word vernünftiges HTML generieren würde.

von Michael U. (amiga)


Lesenswert?

Hallo,

Bernhard S. schrieb:
> Ein Versuch mit einem Response Header.
>
> Die HTML-Seite wird vom Internet Explorer 8+9 und von den Android
> Geräten angezeigt.
>
> Ihr habt bestimmt noch Ideen, was man verbessern könnte.
>
>
> Ich suche einen einfachen und kleinen Response Header.
>
> Mich stört momentan die Content-Length Angabe, geht es auch ohne?
>

Hallo,

sieht doch erstmal gut aus.
Ich hatte hier mal eine Diskussion zum Thema Content-Length und HTTP 
1.1.
Genaugenommen ist die Angabe auch bei 1.1 nicht Pflicht hat sich da 
herausgestellt.
Ich habe sowohl mit als auch ohne und auch HTTP 1.0 und 1.1 mal 
durchprobiert.
Allerdings hatte ich letztlich genau das Problem, daß ein paar Browser 
da etwas eigene Ansichten zur Anzeige entwickelten.
Ich schicke jetzt letztlich eben minimal genau das, was Du auch sendest.
Die Content-Length muß stimmen, eine zu kleine Angabe schnitt bei 
einigen Browserversionen den Rest einfach ab, eine zu große Angabe 
erzeugtw auf einem älteren Android-Handy sogar ein "Seite nicht 
erreichbar", weil es wohl auf die restlichen Bytes bis zum timeout 
wartete.

Der HTML-Teil ist auch ok, es gibt da einganz anderes Problem:
wenn Du gutes altes HTML 3 benutzt, bekommst Du mit wenig Speicher recht 
komplexe Seiten mit Tabellen/Formularen o.ä. zustande.
Allerdings sind etliche TAgs schon auf der Streichliste, HTML 5, CSS 
usw. usw. ist sozusagen Pflicht.
Damit sprengt die geliche Webseite dann aber Deinen Speicherplatz...
Es wird also sicher abshebar aktuelle Browser geben, die die Anzeigen 
nicht mehr sauber formatieren usw.

Meine Homepage ist so ein Fall:
http://www.roehres-home.de/amiga_lebt/i_amiga.html
dieser Teil stammt aus dem vorigen Jahrtausend, nutzt Frames und 
Tabellen usw.
Noch wird sie von den aktuellen Browsern sauber angezeigt.
Alles war auf Platz sparen ausgelegt, 5MB Webspace waren schon viel und 
als Modem-Nutzer wollte man nicht ewig warten, bis die Seite da war...

Auch deshalb liegen meine NetIO inzwischen im Schubfach.

Ansonsten aber weiter viel Erfolg mit Deinem Projekt.

Gruß aus Berlin
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe gerade mal geschaut, was mein Provider eigentlich schickt.
Er sendet keine Content-Length im HTTP 1.1-Header mit.
Wirf sie also mal raus und teste...

Gerade noch gesehen: bei der Anfrage von google-analytics schickt er 
dann wieder eine mit, warum auch immer.

Gruß aus Berlin
Michael

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Hab mir mal die einzelnen Pakete Deiner Hompage mit Wireshark 
angeschaut.

Die Content-Length Angabe wird jedes Mal mit gesendet.

Welche Tools zeigen eigentlich den Respose Header mit an, außer 
Wireshark?

Gruß

Bernhard

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe hier in Firefox das "Live HTTP headers 0.17.1" PlugIn 
installiert, hat dafür bisher gereicht.

Gruß aus Berlin
Michael

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

in FF ist dafür schon seit etlichen Versionen kein Plugin mehr 
erforderlich. Unter Extras/Webentwickler/Netzwerkanalyse kann man 
probelmlos den Request- und Response-Header anzeigen lassen.

Sascha

von Bernhard S. (bernhard)


Lesenswert?

>ich habe hier in Firefox das "Live HTTP headers 0.17.1" PlugIn installiert

funktioniert... danke :-)

von Daniel A. (daniel-a)


Lesenswert?

Harry L. schrieb:
> Mensch Leute!
> Wenn ihr zu blöd seid, nen HTML-Rumpf zu erzeugen, dann speichert doch
> einfach euren Rotz im Word als HTML und fertig!
>
> Das kann man ja nicht mit ansehen!

Wenn man das mit Word abspeichert hat man tonnenweise proprietäre Tags 
und die Datei wird gigantisch.

Der HTML Syntax ist so oder so Schrott. Passe das mal durch den 
Validator laufen, es ist tatsächlich gültiger HTML Code:
1
<!DOCTYPE html>
2
<html>
3
  <head>
4
    <title>Test</title>
5
  </head>
6
  <body>
7
    test
8
    <p>
9
      abc
10
    <p>
11
      def

Deshalb bin ich ein Fan von XHTML, aber das scheint mittlerweile 
ausgestorben zu sein...

von Michael U. (amiga)


Lesenswert?

Hallo,
Sascha W. schrieb:
> in FF ist dafür schon seit etlichen Versionen kein Plugin mehr
> erforderlich. Unter Extras/Webentwickler/Netzwerkanalyse kann man
> probelmlos den Request- und Response-Header anzeigen lassen.

ok, wieder was gelernt.
Hat aber wohl Vor- und Nachteile: wie es scheint muß ich es auf der 
Seite jeweils aktivieren und es erschlägt einen etwas mit den 
Einstellungen...
Dafür kann es eben etliches mehr.

Die kleine Live-Anzeige läuft in einem extra Fenster und zeigt es eben 
an wenn irgendwas passiert, egal in welchem Tab usw.

Gruß aus Berlin
Michael

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
Noch kein Account? Hier anmelden.