Yerf!
Wie gesagt, der HTML-Quelltext ist nicht alles, was an den Browser gesendet wird. Hier mal ein Mitschnitt aus einem Proxy (Fiddler2):
HTTP/1.0 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 16 Jul 2008 14:43:22 GMT
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Cache-Control: private
Content-Type: application/xhtml+xml; charset=iso-8859-1
Content-Length: 1030
X-Cache: MISS from proxy3.site
X-Cache-Lookup: MISS from proxy3.site:3128
Proxy-Connection: keep-alive
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<link rel="stylesheet" type="text/css" href="http://schneegans.de/xp/?url=http%3A%2F%2Frebell.at%2Ftemp%2Fabsolute_bug%2Fscreen.css&ct=application%2Fxhtml%2Bxml" />
</head>
<body>
[...]
Alles bis zur ersten Leerzeile (also bis "Proxy-Connection: keep-alive") sind die HTTP-Header. Diese werden dir in der Quelltext-Ansicht des Browsers nicht mit angezeigt, da sie nicht zum HTML-Dokument, sondern zum HTTP-Request gehören. Dennoch sind sie vorhanden und liefern wichtige Informationen für den Browser, z.B. den Content-Type.
Ohne eine Angabe des Content-Type (also weder im HTTP noch als Meta) kann der Browser nur raten, was da eigentlich an Inhalt kam. Das dürften wohl zu einer Auswahl aus text/html, text/plain oder irgendetwas binäres führen.
Gruß,
Harlequin
<!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->