De response headers en status

De server stuurt natuurlijk ook wat terug, maar naast de opgevraagde
resource zelf zitten hier ook headers bij en ook een status code.
Om te beginnen kun je uit de status code het een en ander afleiden.
Als deze, het 3 nummerige cijfer, met een 2 begint is alles goed. Bij
een 3 wordt je door gestuurd, bij een 4 is er een fout in de request
en bij een 5 is er een probleem met de server. Hoewel het net is om de
code's in je webbrowser te onderzoeken is dit technisch gezien niet
echt nodig. Het is echter vrij simpel om uit de statuslijn even de
code en de beschrijving te halen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

// Parset een response
// De parameter $response moet hier een response bevatten

function parseResponse($response) {
       $output = array();

       // Split body en head
       $response = explode(_EOL . _EOL, $response);
       $output['body'] = $response[1];

       // Split de verschillende head lijnen
       $head = explode(_EOL, $response[0]);

       // Haal de informatie uit de status lijn
       $status = explode(' ', array_shift($head));
       $output['protocol'] = array_shift($status);
       $output['status'] = array_shift($status);
       $output['status_exp'] = implode(' ', $status);

       // Bouw de headers om naar een array
       $headers = array();
       foreach ($head as $line) {
               $exp = explode(': ', $line);
               $name = array_shift($exp);
               $exp = explode('; ', implode(': ', $exp));
               $val = array_shift($exp);

               // Bereid de subheaders voor
               $subvals = array();
               foreach ($exp as $sub) {
                       $subparts = explode('=', $sub);
                       $subvals[array_shift($subparts)] = implode('=', $subparts);
               }


               // Zet de headers in een array
               $headers[$name][] = array('value' => $val, 'subvalues' => $subvals);
       }

       $output['headers'] = $headers;

       return $output;
}


?>

Deze functie haalt ook meteen de headers uit de response, en sommige
van die headers zijn wel belangrijk om ook in je webbrowser te
verwerken. Een goed voorbeeld is de Set-Cookie header. Er kunnen
meerdere cookies verzonden worden per response dus daarom is de output
van deze functie ook zo gemaakt dat hij er meerdere aan kan. De
headers array bevat immers voor elke header een array met daarin elk
voorkomen. Het hoofd gedeelte van een Set-Cookie header is de naam en
de data, dit keert ook weer terug in de volgende request in de Cookie
header, waarin bij meerdere cookies deze gescheiden zijn door een
puntkomma en een spatie. Een voorbeeldje volgt hieronder:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Cookie: NAME=VALUE; NAME2=VALUE

De subvalues van de cookie header bevatten een datum waarop de cookie
ongeldig wordt ('expires') en de path en het domein ('domain') waarop
het cookie geldt. Als het domein .example.org is betekent dit dat deze
geld voor alles dat eindigt op example.org, inclusief example.org.
Je kunt nu inmiddels met je HTTP kennis op een site inloggen, en
ingelogd blijven, en wat posten. Hier eindigt dan ook deze tutorial
bijna, op een dingetje na, proxies.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Basiskennis HTTP
  3. GET: Een pagina opvragen
  4. POST I: Een formulier verzenden
  5. POST II: Bestanden uploaden
  6. De response headers en status
  7. Proxies
  8. En nu?

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.