http:// -- https:// — Accès aux URLs HTTP(s)
Permet des accès, en lecture uniquement, à des fichiers accessibles sur le réseau avec la méthode GET de HTTP 1.0. Un en-tête Host: est envoyé avec la requête, pour gérer les hôtes virtuels basés sur des noms. Si vous avez configuré une version de navigateur avec l'option user_agent dans votre fichier php.ini ou via le contexte de flux, elle sera aussi inclue dans votre requête.
Le flux permet d'accéder au corps (body) de la ressource. Les en-têtes sont stockés dans la variable $http_response_header.
Si vous avez besoin de connaitre l'URL de la ressource depuis laquelle votre document provient (après l'exécution de toutes les redirections), vous devrez analyser la série d'en-têtes retournés par le flux.
La directive from sera utilisée pour l'en-tête From: si elle a été définie, et non écrasée par les Options et paramètres de contexte.
Version | Description |
---|---|
4.3.7 | Détecte les serveurs IIS bogués pour éviter les erreurs "SSL: Fatal Protocol Error". |
4.3.0 | Ajout de https://. |
4.0.5 | Ajout du support des redirections. |
Exemple #1 Détecte la dernière URL après des redirections
<?php
$url = 'http://www.example.com/redirecting_page.php';
$fp = fopen($url, 'r');
$meta_data = stream_get_meta_data($fp);
foreach ($meta_data['wrapper_data'] as $response) {
/* Avons-nous été redirigés ? */
if (strtolower(substr($response, 0, 10)) == 'location: ') {
/* mise à jour de $url avec le chemin après redirection */
$url = substr($response, 10);
}
}
?>
Exemple #2 Envoi d'en-têtes personnalisés avec une requête HTTP
Des en-têtes personnalisés peuvent être envoyés en utilisant des options de contexte. Il est également possible d'utiliser le contournement suivant : des en-têtes personnalisés peuvent être envoyés avec une requête HTTP en tirant avantage d'un effet de bord dans la gestion de la directive de configuration INI user_agent. Définissez user_agent à n'importe quelle chaîne valide (comme la chaîne par défaut, PHP/version) suivie d'un caractère de retour chariot et d'un caractère de nouvelle ligne, suivis des entêtes additionnels.
<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
?>
Avec cette portion de code, la requête suivante sera émise :
GET /index.php HTTP/1.0 Host: www.example.com User-Agent: PHP X-MyCustomHeader: Foo
Note: HTTPS n'est supporté que si l'extension openssl est active.
Les connexions HTTP sont en lecture seule ; l'écriture de données ou la copie de fichier vers une ressource HTTP ne sont pas supportés.
L'envoi de requêtes POST et PUT, par exemple, peut être effectué à l'aide des contextes HTTP.