http-header.xmlDenna kod är public domain. Om ni hittar fel eller vill ändra något i koden blir jag jätteglad om ni skickar dessa ändringar till jesper [at] fantasi [punkt] se.
<?xml version="1.0"?>
<article category="software" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="article.xsd">
<keyword>HTTP header</keyword>
<keyword hidden="true">HTTP-header</keyword>
<topic>HTTP header</topic>
<ingress>
Har du någonsin fått felmeddelandet: "CGI Error: The specified CGI
application misbehaved by not returning a complete set of HTTP
headers."? Då är det troligt att du stött på en inkorrekt
HTTP header. Det exakta felmeddelandet kan variera mellan olika
program, men orsaken är alltid den samma.
</ingress>
<text>
När en webbläsare ska ta emot en fil förväntar
den sig först att få en <em>HTTP header</em> - en
ettikett som talar om vad det är för sorts fil. Denna
ettikett kallas vanligen för mime-typ och det är denna webbläsaren
använder för att avgöra vad den ska göra med filen den får.
Vanliga mime-typer
är <code>audio/mpeg</code>, <code>image/png</code>
och <code>application/zip</code>. Även en vanlig sida med ren
text eller HTML-kod måste förses med en mime-typ. De som
används då är <code>text/plain</code> och <code>text/html</code>.
</text>
<text>
När man klickar på en länk och en webbserver
skickar en vanlig sida till läsaren så kommer servern
att förse sidan med en mime-typ automatiskt. Men om det är
ett CGI-skript som genererar sidan så skickas bara precis
det som skriptet spottar ur sig. En vanlig webbserver lägger
inte till något extra på det som genereras. Det är
därför viktigt att se till att alla CGI-skript som
genererar filer som ska skickas till en webbläsare även
skickar med en mime-typ som presenterar innehållet. Detta gäller
naturligtvis även i andra sammanhang där man pratar med webbläsare
- till exempel om man skriver en egen webbserver.
</text>
<text>
Det räcker dock inte med bara mime-typen. Man måste ha rätt format
runt den också för att allt ska fungera. En korrekt HTTP header
för en HTML-sida är:
</text>
<codebox title="HTTP header">
Content-type: text/html
Här börjar den vanliga sidan...
</codebox>
<text>
Observera den tomma raden mellan mime-typen och det resterande
innehållet. För exempel på hur detta kan se ut finns det flera
olika CGI här i källkodskällan.
</text>
<text>
Om webbläsaren inte får en HTTP header eller om den är är
felaktig vill den oftast inte öppna filen och istället får man ett
felmeddelande i stil med det ovan.
</text>
</article>
|