2011-12-21 6 views
3

Je cherche à mettre sur pied un site Web qui affiche la requête complète en-têtes HTTP et réponse en-têtes HTTP pour le chargement de la page elle-même. Par exemple. Si quelqu'un accède à http://example.com/index.php, je veux les éléments suivants à afficher:Affichage réponse HTTP sur la page Web en utilisant PHP

requête HTTP GET
/index.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv: 1.9.2.16) Gecko/20110319 Firefox/3.6.16
Accepter: texte/html, application/xhtml + xml, application/xml; q = 0.9, /; q = 0,8
Accepter-Langue: en-us, en; q = 0,5
Accept-Encoding: gzip, deflate Accept-
charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,7
Keep-Alive: 115
Connection: keep-alive

réponse HTTP
HTTP/1.1 200 OK
date: 21 décembre 2011 10:20:46 GMT
serveur: Apache/2.2.15 (Red Hat)
X-Powered-By: PHP /5.3.3
Longueur du contenu: 1169
Connexion: fermer
Type de contenu: text/html; charset = UTF-8

Nous avons pu obtenir l'en-tête de demande d'affichage assez simplement en utilisant le code PHP suivant:

print $_SERVER['REQUEST_METHOD']." ".$_SERVER['REQUEST_URI']." ".$_SERVER['SERVER_PROTOCOL']."<br>"; 
foreach (apache_request_headers() as $name => $value) 
     echo "$name: $value<br>"; 

Mais sont quelques difficultés avec l'en-tête de réponse HTTP. Quelqu'un a des idées sur la façon dont nous pouvons faire cela? Il ne doit pas être PHP si vous avez une méthode qui fonctionne en Perle ou CGI ou autre.

Pour être clair, je ne veux pas définir la réponse HTTP à quelque chose de spécifique, ne affichage la réponse par le serveur Web pour charger la page.

+0

Pourquoi avez-vous besoin de cela? –

+0

Ahh, j'avais le but final de la page dans le commentaire original mais il a erré quand j'ai essayé de poster pour la première fois, j'ai oublié de le ré-inclure. L'objectif final de la page est de s'asseoir sur les serveurs Web derrière les équilibreurs de charge afin que nous puissions voir/tester/former sur la façon dont un équilibreur de charge affecte les strreams HTTP. – Eddie

+0

Pouvez-vous utiliser Javascript pour afficher cette information, ce sera beaucoup plus facile pour vous. –

Répondre

2

Eh bien voici le problème, l'en-tête de réponse est généré après que le PHP (ou n'importe quel langage côté serveur d'ailleurs) a déjà terminé son travail.

Pour le mettre en anglais c'est comme le postier qui vous remet une lettre et vous lui demandez d'expliquer comment s'est passé le processus de remise de la lettre. Il va probablement te regarder bêtement.

Vous aurez besoin d'une langue côté client (JavaScript) pour effectuer cette tâche.

0
+1

Cela ne vous donnera pas les en-têtes pour la page que vous regardez, cependant. PHP ne saura pas ce que c'est, car certains d'entre eux viennent d'Apache. – ceejayoz

3

Vous voulez utiliser headers_list()

http://www.php.net/manual/en/function.headers-list.php

headers_list() retourne une liste d'en-têtes à envoyer au navigateur/client. Pour déterminer si ces en-têtes ont déjà été envoyés, utilisez headers_sent().

+0

+1 mais ce ne sera pas un ensemble complet. –

+0

@ Foire TomalakGeret'kal. Je me demande si le tout dans un tampon de sortie serait suffisant pour capturer les en-têtes complets avant qu'ils ne soient envoyés. Cela semble assez compliqué, mais je suppose que ça pourrait marcher. – MetalFrog

+0

Que serait 'Content-Length'? –

Questions connexes