Die vergelijking gaat natuurlijk niet helemaal op... JavaScript variabelen staan ook niet in een URL en de anchor wel. Strict genomen de anchor ook niet, en daar zit 't 'm in. Het HTTP protocol schrijft voor dat er een URL in de request header moet staan, en de #anchor komt nu eenmaal niet voor in de URL specificatie.
Ik moet zeggen dat ik het ook niet erg logisch vind dat de anchor niet opgenomen is in de URL specificatie, ongeacht of de server er iets mee zou moeten doen of niet. Hij wordt toch gebruikt? Overigens heeft Apache er (kennelijk) ook geen enkel probleem mee
als de browser het mee zou sturen:
code:
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
| <?
echo '<pre>';
$errno = false;
$errstr = false;
$fd = fsockopen ( 'localhost', 80, $errno, $errstr, 30 );
if ( !$fd ) {
echo $errno, ": ", $errstr;
exit();
} else {
$request = "GET /dump-all.php#anchor HTTP/1.1\r\n"
. "Connection: Close\r\n"
. "Host: localhost\r\n\r\n";
echo '<h1>Sending request:</h1>';
echo '<blockquote>';
echo htmlentities ( $request );
echo '</blockquote>';
fwrite ( $fd, $request );
echo '<h1>Receiving response:</h1>';
echo '<blockquote>';
while ( $str = fread ( $fd, 4096 ) ) {
echo htmlentities ( $str );
}
echo '</blockquote>';
fclose ( $fd );
}
echo '</pre>';
?> |
Geeft in die dump-all (welke o.a. $_SERVER dumpt) toch
code:
1
| [REQUEST_URI] => /dump-all.php#anchor |
Magoed, het jammere is dus dat geen enkele browser dat doet, dus je hebt gewoon pech