# Web Requests

##### **Allgemeines**

Sogenannte Web Requests sind eigentlich Anfragemethoden des HTTP Protokolls. Sie dienen dazu, mit Webservern zu kommunizieren und die Anfrage zu Klassifizieren.

##### **GET**

Mithilfe des GET Requests werden Inhalte vom Server angefordert. Dieser ist so ziemlich der häufigste Vorgang. Die Anfrage wird in der URL mitgeschickt.

<p class="callout info">Mittels GET können auch Daten an den Server übertragen werden, allerdings ist hier die Menge an zu übertragenden Daten begrenzt (URL Begrenzung) daher sollten hier maximal 255 Zeichen verwendet werden.</p>

##### **POST**

Dient zu Übertragung von Daten an den Server (zum Beispiel Formulardaten). Hiermit können unbegrenzt große Daten übertragen und auch validiert werden. Anfrage wird im "request Body" übermittelt.

##### **HEAD**

Mittels eines HEAD Requests wird der Server dazu angewiesen, nur den Header der Daten zu übertragen und nicht wie bei GET mit dem Gesamten Body.

##### **PUT**

Dient dazu Daten auf einem Server Upzudaten oder Abzulegen. Findet meist bei APIs Anwendung ist aber bei den normalen Webservern zumeist aus Sicherheitsgründen deaktiviert.

##### **DELETE**

Hiermit können Daten auf dem Webserver gelöscht werden. Allerdings ist DELETE wie auch PUT meist nicht Implementiert.

##### **TRACE**

Testet das Clientverhalten, in dem es so tut als ob der Webserver die Daten nie erhalten hat. Wird meist zum Debuggen verwendet.

##### **Vergleich GET und POST**  


<table border="1" id="bkmrk-get-post-back-button" style="border-collapse: collapse; width: 100%; height: 29.8px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">**GET**  
</td><td style="height: 29.8px;">**POST**</td></tr><tr><td>BACK button/Reload  
</td><td>kein Problem</td><td>Daten werden erneut übermittelt, Browser sollte Meldung ausgeben, dass Daten erneut übermittelt werden  
</td></tr><tr><td>Bookmarked (Lesezeichen dieser erstellen)  
</td><td>geht als Bookmark  
</td><td>geht **nicht** als Bookmark</td></tr><tr><td>Cached  
</td><td>kann gecached werden  
</td><td>kann **nicht** gecachet werden  
</td></tr><tr><td>History  
</td><td>Parameter sind in Browser History  
</td><td>Parameter werden **nicht** in der Browser History gespeichert  
</td></tr><tr><td>Datenlänge  
</td><td>Länge der URL ist begrenzt  
</td><td>keine Begrenzung  
</td></tr><tr><td>Datentyp  
</td><td>nur ASCII Zeichen sind erlaubt  
</td><td>keine Begrenzung  
</td></tr><tr><td>Sicherheit  
</td><td>weniger sicher wie POST, da Daten in URL übertragen werden  
Kritisch bei Passwörtern und sensiblen Informationen  
</td><td>etwas sicherer als GET, da Parameter nicht in der Browser History und den Webserver Logs gespeichert werden (verschlüsselt Übertragung aber nicht)  
</td></tr><tr><td>Sichtbarkeit  
</td><td>Daten sind in URL sichtbar  
</td><td>Daten werden **nicht** in der URL gezeigt  
</td></tr></tbody></table>