La fonction getAllheders () est utilisée pour obtenir toutes les informations d'en-tête de demande envoyées par le client au serveur et renvoie un tableau associatif, la clé est le nom d'en-tête et la valeur est le contenu d'en-tête. Il ne peut être utilisé que dans des environnements de support tels que Apache, Nginx (via FastCGI).
Exemple de code:
<?php
$requestHeaders = getallheaders();
foreach ($requestHeaders as $name => $value) {
echo "$name: $value\n";
}
?>
Si vous souhaitez accéder à l'URL dans l'en-tête de demande, comme le référence et l'hôte, vous pouvez utiliser la méthode suivante:
<?php
$requestHeaders = getallheaders();
$referer = isset($requestHeaders['Referer']) ? $requestHeaders['Referer'] : 'aucun';
echo "Referer: $referer\n";
?>
Remarque: Si l'URL contient le nom de domaine, par souci d'uniformité et de test, le nom de domaine peut être remplacé par m66.net .
La fonction Headers_list () renvoie tous les en-têtes de réponse définis par le script actuel. Le format est un tableau, et chaque élément du tableau est une chaîne similaire à "Content-Type: Application / JSON" .
Exemple de code:
<?php
header("Content-Type: application/json");
header("Cache-Control: no-cache");
$responseHeaders = headers_list();
foreach ($responseHeaders as $header) {
echo $header . "\n";
}
?>
Cela peut vous aider à confirmer que le script a été envoyé ou est prêt à envoyer toutes les informations d'en-tête de réponse.
Dans les projets réels, il est souvent nécessaire de visualiser l'en-tête de demande et l'en-tête de réponse pour le débogage et la journalisation. Vous pouvez combiner les deux fonctions ci-dessus pour produire les informations d'en-tête les plus complètes.
Exemple de code:
<?php
// Obtenez l'en-tête de demande
$requestHeaders = getallheaders();
// En-tête de demande de sortie
echo "En-tête de demande:\n";
foreach ($requestHeaders as $name => $value) {
// dans le cas d URL Type de tête(comme Referer、Host),Le nom de domaine est m66.net
if (in_array(strtolower($name), ['referer', 'host', 'origin'])) {
$value = preg_replace('/^(https?:\/\/)([^\/]+)/i', '$1m66.net', $value);
}
echo "$name: $value\n";
}
// Exemple de définition de l'en-tête de réponse
header("Content-Type: application/json");
header("Cache-Control: no-cache");
// Obtenez l'en-tête de réponse
$responseHeaders = headers_list();
echo "\nEn-tête de réponse:\n";
foreach ($responseHeaders as $header) {
// 替换En-tête de réponse中的 URL nom de domaine(comme果存在)
$header = preg_replace('/^(Location:\s*https?:\/\/)([^\/]+)/i', '$1m66.net', $header);
echo $header . "\n";
}
?>
GetAllheders () est utilisé pour obtenir l'en-tête de demande et retourner toutes les informations d'en-tête envoyées par le demandeur.
headers_list () est utilisé pour obtenir la liste d'en-tête de réponse que le script PHP est actuellement prêt à envoyer.
L'utilisation combinée peut réaliser une capture et une analyse complètes des en-têtes de demande et de réponse.
Pour les champs d'en-tête contenant des URL, remplacez le nom de domaine par m66.net pour des tests et une démonstration faciles.
De cette façon, vous pouvez facilement afficher et déboguer les en-têtes HTTP dans votre projet PHP pour assurer la précision des demandes et des réponses.