L'RFC HTTP/1.1 stabilisce che "Il metodo HEAD è identico a GET tranne che il server NON DEVE restituire un messaggio nella risposta". So che Apache onora la RFC ma i moduli non devono. La mia domanda è, mod_php5 onora questo?mod_php rispetta correttamente le richieste HEAD?
Il motivo che mi chiedo è perché ho appena imbattuto in un articolo dicendo che gli sviluppatori PHP dovrebbero controllare questo se stessi con:
if (stripos($_SERVER['REQUEST_METHOD'], 'HEAD') !== FALSE) {
exit();
}
Ho cercato su google un secondo e non molto alzato, diverso da alcune persone dicendo che cercano a cose strane come mod_rewrite/redirect dopo aver ricevuto le richieste HEAD e qualche vecchio baco da 2002 come sostenendo che mod_php eseguiva ancora il resto dello script di default. Così ho appena eseguito un test rapido utilizzando PECL :: HTTP per eseguire
http_head('http://mysite.com/test-head-request.php');
pur avendo:
<?php error_log('REST OF SCRIPT STILL RAN'); ?>
nel test-testa-request.php per vedere se il resto dello script ancora eseguito e non lo fece.
Immagino che dovrebbe essere sufficiente per sistemarlo, ma voglio ottenere più feedback e forse contribuire a chiarire la confusione per chiunque altro si sia interrogato su questo. Quindi, se qualcuno lo sa dalla testa (non è un gioco di parole) o ha le convenzioni che usano per ricevere le richieste HEAD, sarebbe fantastico. Altrimenti, prenderò in anticipo la sorgente C e risponderò in un commento con i miei risultati. Grazie.
Sì, se metti l'intestazione ('Foo:'. $ _ OTTIENI ['header']); error_log ('test'); all'inizio dello script restituisce quell'intestazione/valore e i log. Se si inserisce quel codice in un buffer di output nel corpo HTML, nessuno dei due viene eseguito. Quindi PHP sembra non solo non restituire il corpo del messaggio, nemmeno lo elabora. Continuerò ad uscire; dopo tutte le mie chiamate di header(). Grazie – rkulla
Felice di poterti aiutare. – webbiedave
@rkulla Il codice PHP sottostante viene sempre eseguito allo stesso modo di una richiesta GET. Forse controlla i log degli errori, se non lo è. – Phil