http Protokoll

Das HTTP Protokoll (OSI Layer 7) definiert die “Sprache” die ein Web-Server versteht. HTTP: Hyper Text Transfer Protocol

GET Request

Ein http GET Request wird zum Beispiel ausgeführt wenn ein Web Browser über eine URL eine Webseite laden will:

http://my-server.info/www/hallo.html

Vom Client zum Server:

GET /www/hallo.html HTTP/1.1
Host: my-server.info

Es folgen Headerfelder. Das Feld Host ist verpflichtend, es ermöglicht mehrere getrennte Server unter der gleichen IP Adresse zu betreiben.

Der Server antwortet auf den Request mit einem Response:

HTTP/1.1 200 OK
Date: Sat, 28 Jan 2017 10:34:48 GMT
Last-Modified: Fri, 27 Jan 2017 09:17:09 GMT
Content-Language: de
Content-Type: text/html; charset=utf-8
Content-Length: 70

<!DOCTYPE html>
<html>
<body>
<p>Hallo HTML</p>  
</body>
</html>

In der ersten Zeile steht der Statuscode. Die häufigsten sind 200 für Erfolg und 404 wenn die angeforderte Resource nicht vorhanden ist.

HTTP/1.1 404 Not Found

Auf die erste Zeile folgen Header-Felder, z.B. für die Sprache und das Format der nachfolgenden Daten. Eine leere Zeile trennt die eigentlichen Daten von den Header-Feldern.

Bei GET werden alle Daten vom Client in der URL übertragen. Beispiel: Eingabedaten aus einem HTML Formular

GET /wiki/Spezial:Search?search=Katzen&go=Artikel HTTP/1.1
Host: de.wikipedia.org

POST Request

Übertragung von Daten aus einem HTML Formular mit POST:

POST /wiki/Spezial:Search HTTP/1.1
Host: de.wikipedia.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 24

search=Katzen&go=Artikel

JSON Daten mit POST übertragen:

POST /api/newperson HTTP/1.1
Host: test.org
Content-Length: 49
Content-Type: application/json

{name:{last:"Mustermann",first:"Max"},age:42}

http Methoden

http Header

Bei http Request und Response folgen auf die erste Zeile (GET /www/hallo.html HTTP/1.1 bzw. HTTP/1.1 200 OK) die sogenannten Header-Felder

Request Felder

Accept

Accept: text/html, application/json

Angabe als MIME Type. Beispiele: text/html, text/css, text/javascript, application/json, application/x-www-form-urlencoded, image/gif, image/jpeg.

Response Felder

Content-Length

Länge der im Body übertragenen Daten.

Content-Length: 348

Content-Type

Format der im Body übertragenen Daten.

Content-Type: application/json
Content-Type: text/html; charset=utf-8

Last-Modified

Änderungsdatum und Zeit

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

Server

Verwendeter Server

Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

Cookies

http ist ein Protokoll ohne “Gedächtnis” (state less). Wird eine Resource am Server angesprochen hat dieser keine Information über die Vorgeschichte. Da dies aber häufig notwendig ist werden Cookies verwendet.

Cookies werden im http Response Header an den Client geschickt:

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

[page content]

Bei jedem weiteren Request schickt der Client diese Daten im Header Feld Cookie:

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

Über Cookies kann der Server zum Beispiel unterschiedliche Benutzer unterscheiden.

Expires definiert ein Ablaufdatum. Über Path kann das Cookie nur jenen Webseiten zugeordnet werden die sich an oder unter einem bestimmten Pfad befinden:

HTTP/1.0 200 OK
Set-Cookie: session=Rg3vHJZnehYLjVg7qi3bZjzg; Expires=Tue, 15 Jan 2013 21:47:38 GMT; Path=/
Set-Cookie: made_write_conn=1295214458; Path=/user_accounts
Set-Cookie: reg_fb_gate=deleted; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/

Siehe wikipedia