HTTP
HTTP-verzoeken
Zoeken…
parameters
HTTP-methode | Doel |
---|---|
OPTIONS | Informatie ophalen over de communicatie-opties (beschikbare methoden en headers) die beschikbaar zijn op de opgegeven aanvraag-URI. |
GET | Haal de gegevens op die zijn geïdentificeerd door de aanvraag-URI of de gegevens die zijn geproduceerd door het script dat beschikbaar is op de aanvraag-URI. |
HEAD | Identiek aan GET behalve dat er geen berichttekst door de server wordt geretourneerd: alleen headers. |
POST | Verzend een gegevensblok (opgegeven in de berichttekst) naar de server voor toevoeging aan de bron die is opgegeven in de aanvraag-URI. Meest gebruikt voor formulierverwerking. |
PUT | Bewaar de bijgevoegde informatie (in de berichttekst) als een nieuwe of bijgewerkte bron onder de opgegeven aanvraag-URI. |
DELETE | Verwijder de bron of wachtrij voor verwijdering van de bron die is geïdentificeerd door de aanvraag-URI. |
TRACE | In wezen een echo-opdracht: een werkende, compatibele HTTP-server moet de hele aanvraag terugsturen als de kern van een 200 (OK) -reactie. |
Opmerkingen
De CONNECT
methode is gereserveerd door de specificatie van de methodedefinities voor gebruik met proxy's die kunnen schakelen tussen proxy- en tunnelingmodi (zoals voor SSL-tunneling).
Een minimaal HTTP-verzoek handmatig verzenden via Telnet
Dit voorbeeld toont aan dat HTTP een tekstgebaseerd internetcommunicatieprotocol is en een basis HTTP-verzoek en de bijbehorende HTTP-reactie toont.
U kunt Telnet gebruiken om als volgt handmatig een minimaal HTTP-verzoek vanaf de opdrachtregel te verzenden.
Start een Telnet-sessie naar de webserver
www.example.org
op poort 80:telnet www.example.org 80
Telnet meldt dat u verbinding hebt gemaakt met de server:
Connected to www.example.org. Escape character is '^]'.
Voer een verzoekregel in om een GET-verzoek URL-pad
/
te verzenden met HTTP 1.1GET / HTTP/1.1
Voer een HTTP-headerveldregel in om het hostnaamgedeelte van de vereiste URL te identificeren, dat vereist is in HTTP 1.1
Host: www.example.org
Voer een lege regel in om het verzoek te voltooien.
De webserver verzendt de HTTP-reactie, die verschijnt in de Telnet-sessie.
De volledige sessie is als volgt. De eerste regel van het antwoord is de HTTP-statusregel , die de statuscode 200 en de statustekst OK bevat , die aangeven dat het verzoek met succes is verwerkt. Dit wordt gevolgd door een aantal HTTP-headervelden, een lege regel en de HTML-reactie.
$ telnet www.example.org 80
Trying 2606:2800:220:1:248:1893:25c8:1946...
Connected to www.example.org.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.example.org
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Thu, 21 Jul 2016 15:56:05 GMT
Etag: "359670651"
Expires: Thu, 28 Jul 2016 15:56:05 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (lga/1318)
Vary: Accept-Encoding
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
( style
element en lege regels verwijderd uit de HTML-respons, voor beknoptheid.)
Standaard verzoekindeling
In HTTP 1.1 bestaat een minimaal HTTP-verzoek uit een verzoekregel en een Host
:
GET /search HTTP/1.1 \r\n
Host: google.com \r\n
\r\n
De eerste regel heeft dit formaat:
Method Request-URI HTTP-Version CRLF
Method
moet een geldige HTTP-methode zijn; een van [1] [2] :
-
OPTIONS
-
GET
-
HEAD
-
POST
-
PUT
-
DELETE
-
PATCH
-
TRACE
-
CONNECT
Request-URI
geeft de URI aan of het pad naar de resource die de client aanvraagt. Dit kan zijn:
- een volledig gekwalificeerde URI, inclusief schema, host, (optionele) poort en pad; of
- een pad, in welk geval de host moet worden opgegeven in de
Host
HTTP-Version
geeft de versie aan van het HTTP-protocol dat de client gebruikt. Voor HTTP 1.1-aanvragen moet dit altijd HTTP/1.1
.
De verzoekregel eindigt met een regelterugvoerregelregelpaar, meestal voorgesteld door \r\n
.
Verzoek koptekstvelden
Koptekstvelden (meestal gewoon 'headers' genoemd) kunnen aan een HTTP-verzoek worden toegevoegd om bij het verzoek aanvullende informatie te verstrekken. Een header heeft semantiek vergelijkbaar met parameters die worden doorgegeven aan een methode in elke programmeertaal die dergelijke dingen ondersteunt.
Een verzoek met Host
, User-Agent
en Referer
headers kan er zo uitzien:
GET /search HTTP/1.1 \r\n
Host: google.com \r\n
User-Agent: Chrome/54.0.2803.1 \r\n
Referer: http://google.com/ \r\n
\r\n
Een volledige lijst met ondersteunde HTTP 1.1-aanvraagheaders is te vinden in de specificatie . De meest voorkomende zijn:
-
Host
- het hostnaamgedeelte van de aanvraag-URL (vereist in HTTP / 1.1) -
User-Agent
- een tekenreeks die de aanvragende user-agent vertegenwoordigt; -
Referer
- de URI van waaruit de client hiernaar werd verwezen; en -
If-Modified-Since
- geeft een datum die de server kan gebruiken om te bepalen of een resource is gewijzigd en geeft aan dat de client een kopie in het cachegeheugen kan gebruiken als dit niet het geval is.
Een koptekst moet worden gevormd als Name: Value CRLF
. Name
is de kopnaam, zoals User-Agent
. Value
zijn de gegevens die eraan zijn toegewezen en de regel moet eindigen met een CRLF. Koptekstnamen zijn niet hoofdlettergevoelig en mogen alleen letters, cijfers en tekens gebruiken !#$%&'*+-.^_`|~
(RFC7230 paragraaf 3.2.6 Veldwaardecomponenten).
De Referer
header veld naam is een typo voor 'referrer', per ongeluk geïntroduceerd in RFC1945 .
Berichtlichamen
Sommige HTTP-aanvragen kunnen een berichttekst bevatten. Dit zijn aanvullende gegevens die de server zal gebruiken om het verzoek te verwerken. Berichtlichamen worden meestal gebruikt in POST- of PATCH- en PUT-aanvragen, om nieuwe gegevens te verstrekken die de server op een resource moet toepassen.
Verzoeken die een berichttekst bevatten, moeten altijd de lengte in bytes bevatten met de header Content-Length
.
Een berichttekst is opgenomen na alle headers en een dubbele CRLF. Een voorbeeld van een PUT-aanvraag met een body kan er zo uitzien:
PUT /files/129742 HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Chrome/54.0.2803.1\r\n
Content-Length: 202\r\n
\r\n
This is a message body. All content in this message body should be stored under the
/files/129742 path, as specified by the PUT specification. The message body does
not have to be terminated with CRLF.
HEAD
en TRACE
aanvragen mogen geen berichttekst bevatten.