HTTP est écrit par Hypertext Transfer Protocol. L'ensemble du World Wide Web utilise ce protocole. Presque la plupart du contenu que vous voyez dans votre navigateur est transmis via le protocole HTTP, comme cet article.
Les en-têtes HTTP sont des demandes HTTP et des cœurs correspondants, et il transporte des informations sur les navigateurs du client, les pages de demande, les serveurs, etc.
Lorsque vous tapez une URL dans la barre d'adresse du navigateur, votre navigateur sera similaire à la demande HTTP suivante:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Hôte: net.tutsplus.com
User-Agent: Mozilla / 5.0 (Windows; U; Windows NT 6.1; EN-US; RV: 1.9.1.5) Gecko / 20091102 Firefox / 3.5.5 (.NET CLR 3.5.30729)
Accepter: texte / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8
Accept-Language: En-US, EN; Q = 0,5
Codage d'acceptation: gzip, dégonfler
Accept-Charset: ISO-8859-1, UTF-8; Q = 0,7, *; Q = 0,7
Keep-Alive: 300
Connexion: Keep-Alive
Cookie: PhPSESSID = R2T5UVJQ435R4Q7IB3VTDJQ120
Pragma: sans cache
Contrôle du cache: sans cache
La première ligne est appelée ligne de demande. Il décrit les informations de base de cette demande, et le reste est des en-têtes HTTP.
Une fois la demande terminée, votre navigateur peut recevoir la réponse HTTP suivante:
HTTP/1.x 200 OK
Codage de transfert:
Date: Sat, 28 novembre 2009 04:36:25 GMT
Serveur: litres
Connexion: fermer
X-alimenté par: W3 Cache totale / 0,8
Pragma: public
Expire: Sat, 28 novembre 2009 05:36:25 GMT
Etag: Pub1259380237; GZ
Cache-Control: Max-Age = 3600, public
Type de contenu: texte / html; Charset = UTF-8
Dernier mode: Sat, 28 novembre 2009 03:50:37 GMT
X-Pingback: http://net.tutsplus.com/xmlrpc.php
Codage du contenu: gzip
Varie: acceptation d'acceptation, cookie, agent utilisateur
<! - ... reste du HTML ... ->
La première ligne est appelée ligne de statut, qui est suivie par des en-têtes HTTP. Une fois la ligne vierge terminée, le contenu sera sorti (dans ce cas, une sortie HTML).
Mais vous ne pouvez pas voir les en-têtes HTTP lorsque vous regardez le code source de la page, bien qu'ils soient envoyés au navigateur avec ce que vous pouvez voir.
Cette demande HTTP envoie également des demandes de réception d'autres ressources, telles que des images, des fichiers CSS, des fichiers JS, etc.
Jetons un coup d'œil aux détails ci-dessous.
Les extensions de Firefox suivantes peuvent vous aider à analyser les en-têtes HTTP:
1. Firebug
2.Live les en-têtes HTTP
3. Dans PHP:
Sous l'article, vous verrez quelques exemples d'utilisation de la démonstration de PHP.
La première ligne, appelée la première ligne, contient trois parties:
Les sections restantes sont chaque ligne avec une paire de valeurs de nom: Ils contiennent une variété d'informations sur les demandes et votre navigateur. Par exemple, User-Agent indique votre version de navigateur et le système d'exploitation que vous utilisez. Le codage d'acceptation indiquera au serveur que votre navigation peut accepter la sortie compressée similaire à GZIP.
La plupart de ces en-têtes sont facultatifs. Les demandes HTTP peuvent même être réduites à cela:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Hôte: net.tutsplus.com
Et vous pouvez toujours recevoir une réponse valide du serveur.
Les trois types de demandes les plus courants sont les suivants: obtenir, publier et diriger. Vous connaissez peut-être déjà les deux premiers au cours du processus d'écriture de HTML.
La plupart des HTML, Images, JS, CSS, ... qui sont transmis au navigateur sont demandés via la méthode GET. C'est le principal moyen d'obtenir des données.
Par exemple, pour obtenir un article Nettus +, la première ligne de la demande HTTP ressemble généralement à ceci:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Une fois le HTML chargé, le navigateur enverra une demande GET pour obtenir l'image, comme ceci:
GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
Le formulaire peut également être envoyé via la méthode GET. Voici un exemple:
<form action=foo.php method=GET>
Prénom: <entrée name = first_name type = text />
Nom de famille: <name d'entrée = last_name type = text />
<input name = Action type = soumider value = soumed />
</ form>
Lorsque ce formulaire sera soumis, la demande HTTP ressemblera à ceci:
GET /foo.php?first_name=John&last_name=Doe&action=Submit HTTP/1.1
...
Vous pouvez envoyer une entrée de formulaire sur le serveur en l'ajoutant dans la chaîne de requête.
Bien que vous puissiez attacher des données à l'URL via la méthode GET pour la transmettre au serveur, il est plus approprié d'utiliser la publication pour envoyer des données au serveur dans de nombreux cas. Il n'est pas réaliste d'envoyer une grande quantité de données via GET, et il a certaines limites.
Il est courant d'utiliser des demandes de poste pour envoyer des données de formulaire. Changeons l'exemple ci-dessus pour utiliser le post:
<form action=foo.php method=POST>
Prénom: <entrée name = first_name type = text />
Nom de famille: <name d'entrée = last_name type = text />
<input name = Action type = soumider value = soumed />
</ form>
La soumission de ce formulaire créera une demande HTTP comme suit:
POST /foo.php HTTP/1.1
Hôte: localhost
User-Agent: Mozilla / 5.0 (Windows; U; Windows NT 6.1; EN-US; RV: 1.9.1.5) Gecko / 20091102 Firefox / 3.5.5 (.NET CLR 3.5.30729)
Accepter: texte / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8
Accept-Language: En-US, EN; Q = 0,5
Codage d'acceptation: gzip, dégonfler
Accept-Charset: ISO-8859-1, UTF-8; Q = 0,7, *; Q = 0,7
Keep-Alive: 300
Connexion: Keep-Alive
Référent: http: //localhost/test.php
Type de contenu: application / x-www-form-urlencoded
Longueur du contenu: 43
first_name = John & last_name = Doe & Action = soumettre
Voici trois choses à noter:
Les demandes de méthode post peuvent également être utilisées sur AJAX, applications, curl…. Et tous les formulaires de téléchargement de fichiers sont nécessaires pour utiliser la publication.
La tête et le get sont très similaires, sauf que la tête n'accepte pas la partie de contenu de la réponse HTTP. Lorsque vous envoyez une demande de tête, cela signifie que vous ne êtes intéressé que par l'en-tête HTTP, pas le document lui-même.
Cette méthode permet au navigateur de déterminer si la page a été modifiée et donc de contrôler le cache. Il peut également être déterminé si le document demandé existe.
Par exemple, si vous avez de nombreux liens sur votre site Web, vous pouvez simplement leur envoyer des demandes de tête séparément pour déterminer s'il existe des liens morts, ce qui est beaucoup plus rapide que d'utiliser GET.
Lorsque le navigateur envoie une demande HTTP, le serveur répondra à la demande via une réponse HTTP. Si vous ne vous souciez pas du contenu, la demande ressemblera à ceci:
La première information précieuse est l'accord. Actuellement, le serveur utilisera HTTP / 1.X ou HTTP / 1.1.
Ensuite, un bref message représente le statut. Le code 200 signifie que notre demande a été envoyée avec succès et que le serveur renvoie le document demandé après les informations d'en-tête.
Nous avons tous vu la page 404. Lorsque je demande un chemin qui n'existe pas du serveur, le serveur nous répond avec un 404 au lieu de 200.
Le reste de la réponse est similaire à la demande HTTP. Il s'agit de logiciels de serveur, lorsque les pages / fichiers ont été modifiés, le type MIME, etc ...
De même, ces informations d'en-tête sont facultatives.
Comme mentionné ci-dessus, 200 est utilisé pour indiquer que la demande est réussie.
206 Contenu partielSi une application ne demande que des fichiers dans une certaine plage, il retournera 206.
Ceci est généralement utilisé pour la gestion du téléchargement, la continuation des points d'arrêt ou les téléchargements de caisson de fichiers.
404 introuvableC'est facile à comprendre
401 non autoriséLes pages protégées par mot de passe reviendront à ce statut. Si vous n'entrez pas le mot de passe correct, vous verrez les informations suivantes dans votre navigateur:
Notez qu'il s'agit d'une page protégé par mot de passe. La boîte contextuelle qui demande à entrer un mot de passe ressemble à ceci:
403 interditSi vous n'avez pas la permission d'accéder à une page, il reviendra au statut 403. Cela se produit généralement lorsque vous essayez d'ouvrir un dossier sans page d'index. Si les paramètres du serveur n'autorisent pas la visualisation du contenu du répertoire, vous verrez une erreur 403.
D'autres méthodes envoient également des restrictions d'autorisation, telles que vous pouvez les bloquer via votre adresse IP, ce qui nécessite une assistance HTACCESS.
order allow,deny
Nier à partir de 192.168.44.201
Nier à partir de 224.39.163.12
Nier à partir de 172.16.7.92
Autoriser de tous
302 (ou 307) se sont déplacés temporairement et 301 se sont déplacés de façon permanenteCes deux états apparaîtront lorsque le navigateur redirigera. Par exemple, vous utilisez un service de raccourcissement d'URL comme bit.ly. C'est aussi ainsi qu'ils savent qui a cliqué sur leur lien.
302 et 301 sont très similaires aux navigateurs, mais il existe des différences pour les robots de recherche. Par exemple, si votre site Web est en cours de maintien, vous redirigerez le navigateur client vers une autre adresse avec 302. Des chenilles de moteur de recherche réindexeront votre page à l'avenir. Mais si vous utilisez une redirection 301, cela signifie que vous dites au robot de recherche: votre site Web a été en permanence déménagé vers la nouvelle adresse.
Erreur de serveur 500 (erreur du serveur interne)Ce code apparaît généralement lorsque le script de page se bloque. La plupart des scripts CGI ne publient pas de messages d'erreur au navigateur comme PHP. Si une erreur mortelle se produit, il n'enverra qu'un code d'état de 500. Pour le moment, vous devez vérifier le journal d'erreur du serveur pour dépanner.
Liste complèteVous pouvez trouver la description complète du code d'état HTTP ici. Ou vérifiez-le ici (http://tools.vevb.com/table/http_status_code).
Examinons maintenant certaines informations de demande HTTP courantes dans les en-têtes HTTP.
Toutes ces informations d'en-tête peuvent être trouvées dans le tableau $ _Server de PHP. Vous pouvez également utiliser la fonction getallheders () pour obtenir toutes les informations d'en-tête à la fois.
Une demande HTTP sera envoyée à une adresse IP spécifique, mais la plupart des serveurs ont la possibilité d'héberger plusieurs sites Web sous la même adresse IP, de sorte que le serveur doit savoir quel nom de domaine demande le navigateur.
Host: rlog.cn
Il s'agit juste d'un nom d'hôte de base, y compris des noms de domaine et des noms de domaine enfant.
Dans PHP, vous pouvez le visualiser via $ _Server ['http_host'] ou $ _server ['Server_name'].
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Cette tête peut transporter les informations suivantes:
Il s'agit de la méthode générale utilisée par certains sites Web pour collecter des informations sur les visiteurs. Par exemple, vous pouvez savoir si un visiteur utilise votre téléphone pour visiter votre site Web, puis décider de les diriger vers un site Web mobile qui fonctionne bien à faible résolution.
Dans PHP, User-Agent peut être obtenu via $ _Server ['http_user_agent']
if ( strstr($_SERVER['HTTP_USER_AGENT'],'MSIE 6') ) {
Echo s'il vous plaît arrêtez d'utiliser IE6!;
}
Accept-Language: en-us,en;q=0.5
Ces informations peuvent indiquer les paramètres de la langue par défaut de l'utilisateur. Si le site Web a une version linguistique différente, vous pouvez utiliser ces informations pour rediriger le navigateur de l'utilisateur.
Il peut être transporté en plusieurs langues par segmentation des virgules. Le premier sera la langue préférée, et d'autres langues porteront une valeur Q pour indiquer la préférence de l'utilisateur pour la langue (0 ~ 1).
Utilisez $ _server [http_accept_language] dans PHP pour obtenir ces informations.
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') {
En-tête («Emplacement: http://french.mydomain.com»);
}
Accept-Encoding: gzip,deflate
La plupart des navigateurs modernes prennent en charge la compression GZIP et rapporteront ces informations au serveur. À l'heure actuelle, le HTML comprimé sera envoyé au navigateur. Cela peut réduire la taille des fichiers de près de 80% pour économiser le temps de téléchargement et la bande passante.
Ces informations peuvent être obtenues en utilisant $ _Server [http_accept_encoding] en php. Ensuite, la valeur sera automatiquement détectée lorsque la méthode ob_gzhandler () est appelée, vous n'avez donc pas besoin de le détecter manuellement.
// enables output buffering
// et toutes les sorties sont compressées si le navigateur le prend en charge
ob_start ('ob_gzhandler');
Si une page a été mise en cache dans votre navigateur, la prochaine fois que vous parcourez le navigateur, vérifiera si le document a été modifié, et il enverra un en-tête comme ceci:
If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT
S'il n'a pas été modifié depuis ce temps, le serveur retournera 304 non modifié et ne renverra pas le contenu. Le navigateur lira automatiquement le contenu dans le cache
Dans PHP, vous pouvez utiliser $ _server ['http_if_modified_since'] pour détecter.
// assume $last_modify_time was the last the output was updated
// Le navigateur a-t-il envoyé une en-tête si modifiée-sincère?
if (isset ($ _ serveur ['http_if_modified_since'])) {
// Si le cache du navigateur correspond à l'heure modifiée
if ($ last_modify_time == strToTime ($ _ serveur ['http_if_modified_since'])) {
// Envoie une en-tête 304 et pas de contenu
En-tête (http / 1.1 304 non modifié);
sortie;
}
}
Il existe également un en-tête HTTP appelé ETAG, qui est utilisé pour déterminer si les informations mises en cache sont correctes, et nous l'expliquerons plus tard.
Comme son nom l'indique, il enverra des informations de cookie stockées dans votre navigateur au serveur.
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120; foo=bar
Il s'agit d'un ensemble de paires de valeurs de nom divisées par des demi-colons. Les cookies peuvent également inclure l'ID de session.
En PHP, un seul cookie peut être obtenu en accédant au tableau $ _cookie. Vous pouvez utiliser directement le tableau $ _Session pour obtenir la variable de session. Si vous avez besoin de l'ID de session, vous pouvez utiliser la fonction session_id () au lieu du cookie.
echo $_COOKIE['foo'];
// Sortie: barre
echo $ _cookie ['phPSessid'];
// Sortie: R2T5UVJQ435R4Q7IB3VTDJQ120
session_start ();
echo session_id ();
// Sortie: R2T5UVJQ435R4Q7IB3VTDJQ120
Comme son nom l'indique, l'en-tête contiendra des informations d'URL de référence.
Par exemple, j'ai visité la page d'accueil de Nettus + et j'ai cliqué sur un lien, et cet en-tête sera envoyé au navigateur:
Referer: http://net.tutsplus.com/
Dans PHP, la valeur peut être obtenue par $ _server ['http_referer'].
if (isset($_SERVER['HTTP_REFERER'])) {
$ url_info = parse_url ($ _ serveur ['http_referrer']);
// Le surfeur vient-il de Google?
if ($ url_info ['hôte'] == 'www.google.com') {
parse_str ($ url_info ['query'], $ vars);
Echo que vous avez recherché sur Google ce mot-clé :. $ vars ['q'];
}
}
// Si l'URL de référence était:
// http://www.google.com/search?source=ig&hl=en&rlz=&=&q=http+heders&aq=f&oq=&aqi=g-p1g9
// La sortie sera:
// Vous avez recherché sur Google ce mot clé: les en-têtes HTTP
Vous avez peut-être remarqué que le mot référentiel est mal orthographié en tant que référent. Malheureusement, il a fait des spécifications officielles de HTTP comme ça et s'est coincé.
Lorsqu'une page nécessite une autorisation, le navigateur apparaîtra dans une fenêtre de connexion. Après avoir entré le compte correct, le navigateur enverra une demande HTTP, mais il contiendra un en-tête:
Authorization: Basic bXl1c2VyOm15cGFzcw==
Cette partie des informations contenues dans l'en-tête est encodée la base64. Par exemple, Base64_decode ('bxl1c2vyom15cgfzcw ==') sera converti en 'myuser: mypass'.
Dans PHP, cette valeur peut être obtenue avec $ _server ['php_auth_user'] et $ _server ['php_auth_pw'].
Nous expliquerons plus de détails dans la section WWW-Authenticate.
Maintenant, permettez-moi de comprendre certaines informations de réponse HTTP dans les en-têtes HTTP courants.
En PHP, vous pouvez définir les informations de réponse d'en-tête via Header (). PHP a automatiquement envoyé certaines informations d'en-tête nécessaires, telles que le contenu chargé, la définition de cookies, etc ... vous pouvez voir l'envoi et être envoyé via la fonction en tête_list (). Vous pouvez également utiliser la fonction Header_Sent () pour vérifier si les informations d'en-tête ont été envoyées.
W3.org est défini comme: Le champ général-tête-leader du contrôle de cache est utilisé pour spécifier des directives qui doivent être respectées par tous les mécanismes de mise en cache le long de la chaîne de demande / réponse. Où les mécanismes de mise en cache contient des informations de passerelle et de proxy que votre FAI peut utiliser.
Par exemple:
Cache-Control: max-age=3600, public
Le public signifie que la réponse peut être mise en cache par n'importe qui, et l'âge maximum indique le nombre de secondes que le cache est valide. Permet à votre site Web d'être mis en cache pour réduire considérablement le temps de téléchargement et la bande passante, tout en améliorant la vitesse de chargement du navigateur.
Vous pouvez également désactiver le cache en définissant la commande sans cache:
Cache-Control: no-cache
Pour plus de détails, veuillez consulter W3.org.
Cet en-tête contient le type mime du document. Le navigateur décidera comment analyser le document en fonction de ce paramètre. Par exemple, une page HTML (ou une page PHP avec sortie HTML) renverra quelque chose comme ceci:
Content-Type: text/html; charset=UTF-8
«Texte» est le type de document, et «html» est le sous-type de document. Cet en-tête comprend également plus d'informations, telles que Charset.
S'il s'agit d'une image, une réponse comme celle-ci sera envoyée:
Content-Type: image/gif
Le navigateur peut utiliser le type MIME pour décider d'utiliser des programmes externes ou d'étendre le document lui-même. L'exemple suivant réduit l'appel à Adobe Reader:
Content-Type: application/pdf
Chargement directement, Apache juge généralement automatiquement le type MIME du document et ajoutera des informations appropriées à l'en-tête. De plus, la plupart des navigateurs ont un certain degré de tolérance aux défauts. Si l'en-tête ne fournit pas ou ne fournit pas les informations incorrectement, elle détectera automatiquement le type mime.
Vous pouvez trouver une liste de types mime couramment utilisés ici.
Dans PHP, vous pouvez utiliser finfo_file () pour détecter le type IME du fichier.
Cet en-tête dira au navigateur d'ouvrir une fenêtre de téléchargement de fichiers au lieu d'essayer d'analyser le contenu de la réponse. Par exemple:
Content-Disposition: attachment; filename=download.zip
Cela fait que le navigateur a une boîte de dialogue comme ceci:
Notez que les informations d'en-tête de type contenu qui les conviennent seront également envoyées.
Content-Type: application/zip
Disposition du contenu: pièce jointe; filename = download.zip
Lorsque le contenu doit être transféré au navigateur, le serveur peut utiliser cet en-tête pour informer le navigateur de la taille (octets) du fichier à transférer.
Content-Length: 89123
Ces informations sont très utiles pour les téléchargements de fichiers. C'est pourquoi le navigateur connaît la progression du téléchargement.
Par exemple, ici, j'ai écrit un script virtuel pour simuler un téléchargement lent.
// it's a zip file
En-tête ('Content-Type: Application / Zip');
// 1 million d'octets (environ 1megabyte)
en-tête ('Content-Length: 1000000');
// Chargez une boîte de dialogue de téléchargement et enregistrez-la en téléchargement.zip
En-tête ('Content-Disposition: pièce jointe; fileName = download.zip');
// 1000 fois 1000 octets de données
pour ($ i = 0; $ i <1000; $ i ++) {
echo str_repeat (., 1000);
// Dormez pour ralentir le téléchargement
Usleep (50000);
}
Le résultat sera comme ceci:
Maintenant, je commençai l'en-tête du contenu:
// it's a zip file
En-tête ('Content-Type: Application / Zip');
// Le navigateur ne connaît pas la taille
// en-tête ('Content-Length: 1000000');
// Chargez une boîte de dialogue de téléchargement et enregistrez-la en téléchargement.zip
En-tête ('Content-Disposition: pièce jointe; fileName = download.zip');
// 1000 fois 1000 octets de données
pour ($ i = 0; $ i <1000; $ i ++) {
echo str_repeat (., 1000);
// Dormez pour ralentir le téléchargement
Usleep (50000);
}
Le résultat est devenu le suivant:
Ce navigateur ne vous dira que combien vous avez téléchargé, mais ne vous dira pas combien vous devez télécharger au total. Et la barre de progrès ne montrera pas les progrès.
Il s'agit d'une autre information d'en-tête générée pour le cache. Cela ressemblera à ceci:
Etag: pub1259380237;gz
Le serveur peut répondre à ces informations avec chaque fichier envoyé au navigateur. Cette valeur peut contenir la dernière date modifiée, la taille du fichier ou la somme de contrôle de fichier du document. La navigation le mettra en cache avec le document reçu. La prochaine fois que le navigateur demande à nouveau le même fichier, la demande HTTP suivante sera envoyée:
If-None-Match: pub1259380237;gz
Si la valeur ETAG du document demandé est cohérente avec elle, le serveur enverra un code d'état 304 au lieu de 2OO. Et aucun contenu n'est retourné. Le navigateur chargera le fichier à partir du cache pour le moment.
Comme son nom l'indique, ces informations d'en-tête utilisent le format GMT pour indiquer le dernier temps de modification du document:
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
$modify_time = filemtime($file);
En-tête (dernier modifié :. gmdate (d, d myh: i: s, $ modify_time). gmt);
Il fournit un autre mécanisme de mise en cache. Le navigateur peut envoyer une demande comme ceci:
If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT
Nous en avons déjà discuté dans la section if-modifiée-sur-lece.
Cet en-tête est utilisé pour la redirection. Si le code de réponse est 301 ou 302, le serveur doit envoyer l'en-tête. Par exemple, lorsque vous visitez http://www.nettus.com, le navigateur recevra la réponse suivante:
HTTP/1.x 301 Moved Permanently
...
Emplacement: http://net.tutsplus.com/
...
En PHP, vous pouvez rediriger les visiteurs de cette manière:
header('Location: http://net.tutsplus.com/');
Par défaut, le code d'état 302 sera envoyé. Si vous souhaitez envoyer 301, écrivez-le comme ceci:
header('Location: http://net.tutsplus.com/', true, 301);
Lorsqu'un site Web doit définir ou mettre à jour les informations sur les cookies que vous parcourez, elle utilisera un tel en-tête:
Set-Cookie: skin=noskin; path=/; domain=.amazon.com; expires=Sun, 29-Nov-2009 21:42:28 GMT
Set-Cookie: Session-ID = 120-7333518-8165026; chemin = /; domaine = .amazon.com; Expire = Sat 27 février 08:00:00 2010 GMT
Chaque cookie sera utilisé comme en-tête séparé. Notez que le réglage des cookies via JS ne sera pas reflété dans l'en-tête HTTP.
En PHP, vous pouvez définir des cookies via la fonction Setcookie (), et PHP enverra des en-têtes HTTP appropriés.
setcookie(TestCookie, foobar);
Il enverra un en-tête comme ceci:
Set-Cookie: TestCookie=foobar
Si le temps d'expiration n'est pas spécifié, le cookie sera supprimé après la fermeture du navigateur.
Un site Web peut envoyer ces informations d'en-tête sur HTTP pour vérifier les utilisateurs. Une fenêtre contextuelle s'ouvrira lorsque le navigateur verra cette réponse dans la tête.
WWW-Authenticate: Basic realm=Restricted Area
Cela ressemblera à ceci:
Dans un chapitre du manuel PHP, il y a un code simple qui montre comment faire quelque chose comme ça avec PHP:
if (!isset($_SERVER['PHP_AUTH_USER'])) {
En-tête ('www-authenticate: Basic Realm = My Realm');
En-tête ('http / 1.0 401 non autorisé');
Echo 'Texte à envoyer si l'utilisateur frappe le bouton Annuler';
sortie;
} autre {
echo <p> bonjour {$ _server ['php_auth_user']}. </p>;
echo <p> vous avez entré {$ _server ['php_auth_pw']} comme mot de passe. </p>;
}
Cet en-tête est généralement défini lorsque le contenu de retour est compressé.
Content-Encoding: gzip
Dans PHP, si vous appelez la fonction ob_gzhandler (), cet en-tête sera automatiquement défini.
Adresse originale: http://css9.net/all-about-http-headers/