Was ist los mit dieser HTTP-Anfrage?

  • Auf meinem Linux-Computer ist ein Apache installiert, und ich versuche, einen HTTP-Client zu schreiben, der eine TCP-Verbindung zum Abrufen einer Webseite enthält.

    Dazu öffne ich zunächst einen Socket für localhost und schreibe den folgenden Kopf:

     GET / HTTP/1.0
    Host: http://localhost:80
    User-Agent: My-User-Agent 1.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Cache-Control: no-cache
    Accept-Language: en;q=0.7,en-us;q=0.3
    Connection: close
     

    Allerdings pache gibt mir einen Fehler bei der fehlerhaften Anforderung, der so aussieht

     HTTP/1.1 400 Bad Request
    Date: Mon, 21 Nov 2011 23:58:03 GMT
    Server: Apache/2.2.20 (Ubuntu)
    Vary: Accept-Encoding
    Content-Length: 311
    Connection: close
    Content-Type: text/html; charset=iso-8859-1
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
    <html><head>
    <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not 
    understand.<br /> </p> <hr> <address>Apache/2.2.20 (Ubuntu) Server at
    http://localhost:80 Port 80</address> </body></html>
     

    Das Apache-Fehlerprotokoll sagt folgendes aus: [Mo Nov 21 15:58:03 2011] [Fehler] [Client 127.0.0.1] Client hat einen ungültigen Host-Header gesendet.

    Kann mir bitte jemand helfen? mit diesem. Was stimmt nicht mit der Kopfzeile?

    22 November 2011
    AnkitRajan
1 answer
  • Der Host sollte in diesem Fall einfach localhost sein:

     GET / HTTP/1.0
    Host: localhost
    ...
     
    22 November 2011
    DV13