http-header.xml

Denna 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>