Ich habe das verrückteste Problem mit Firefox. Ich bin mir nicht sicher, ob dieses Problem von Firefox selbst oder von meinem benutzerdefinierten Webserver (in Delphi erstellt) oder was es sein könnte. Dieses Problem tritt nur in Firefox (und Opera) auf, wo es sowohl alles vom Kopf bis zum Körper bewegt als auch zufällige Zeichen am Anfang des Körpers hinzufügt. Seltsamerweise macht es das sogar mit einer komplett 100% leeren Webseite.Firefox Header zu zerstören und zufällige Zeichen
Ich bin mit einer Seite so einfach wie diese Prüfung:
<html>
<head>
<title>Test</title>
</head>
<body>
</body>
</html>
Wie für den Web Server, Ich baue eine benutzerdefinierte HTTP-App in Delphi mit IdHTTPWebBrokerBridge
(Indy) und einfach die ContentStream
ersetzen (oder Content
) des Request
wie so ...
procedure TDashModule.DashConsoleHomeAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.ContentType:= 'text/html';
Response.ContentStream:= TFileStream.Create('C:\SomeDir\SomeFile.html', fmOpenRead or fmShareDenyNone);
end;
... wo SomeFile.html
ist die leere Seite, wie oben geschrieben, und das Verfahren ist ein Event-Handler für die Standard-Request-Handler.
In Chrome, IE, Safari usw. zeigt alles genau wie der ursprüngliche Code. Firefox (und Opera) jedoch produzieren diese:
<html>
<head>
</head>
<body>

<title>Test</title>
</body>
</html>
Wie Sie sehen können, die title
Tag wurde der body
nach unten bewegt wird, und einige zufällige Zeichen 
sind ganz am Anfang des Körpers erscheinen. Wenn die rohe Seite in Firefox als Originaldatei angezeigt wird, wird sie korrekt angezeigt. Aber wenn ich meinen Webserver in Delphi verwende, zerstört Firefox diese Seite (und alle anderen Seiten).
Was könnte das tun und wie es zu beheben?
Schritte
A) Erstellen Sie eine neue HTML-Seite (für mich in Visual Studio 2010) zu reproduzieren, mit eben diesen Inhalt:
<html>
<head>
<title>Test</title>
</head>
<body>
</body>
</html>
B) In Delphi XE2, startet ein neues Projekt : File > New > Other... > Web Broker > Web Server Application
C) wählen Sie Stand-alone VCL Application
> Weiter> Fertig
D) eine def erstellen Ault Handler (Rechtsklick auf WebModule1
und wählen Action Editor...
)
E) Für DefaultHandler
Artikel, gehen Sie zu den Eigenschaften von Ereignis und gehen Sie auf die Event-Handler für OnAction
F) Ersetzen Sie alle Code, der mit dieser bereits vorhanden ist (ersetzen Dateiname mit HTML-Dateiname):
Response.ContentStream:= TFileStream.Create('C:\SomeDir\SomeFile.html', fmOpenRead or fmShareDenyNone);
E) Run-Anwendung und klicken Sie auf "Show In Browser" - kopieren/einfügen der URL zu Firefox, falls erforderlich.
UPDATE
Dank der Hilfe, ich bin gekommen, das Problem ist, mit dem BOM-Tag der Datei zu erkennen, die dort nicht hingehörte.Es war aufgrund der TFileStream
funktioniert, lädt es jedes kleine Stück der Datei, die diesen Code enthalten. Ich habe meine Methode geändert, um stattdessen TStringList.LoadFromFile()
zu verwenden, da dies automatisch erkannt wird und ich kann auch TStringList.Text
lesen, um Response.Content
zuzuweisen.
alle Kommentare gegangen? – OnTheFly
Es scheint so, obwohl einige Kommentare aus der Kritik und Sarkasmus waren, andere waren sehr detailliert und sollten nicht gelöscht werden. –
Kritik ist nicht ** das ** schlecht :-) Wie auch immer, es scheint, dass all diese "geheimestaatsmoderation" wenig außer Kontrolle geraten ist. – OnTheFly