Options de contexte HTTP

Options de contexte HTTPListe des options de contexte HTTP

Description

Options de contexte pour les protocoles http:// et https://.

Options

methodchaîne de caractères

GET, POST, ou n'importe quelle autre méthode HTTP supportée par le serveur distant.

Par défaut, vaut GET.

headerarray ou string

En-têtes supplémentaires à envoyer lors de la requête. Les valeurs de cette option écraseront les autres valeurs (comme User-agent:, Host:, et Authentication:), même en suivant les redirections Location:. Ainsi il n'est pas recommandé de définir l'en-tête Host:, si follow_location est activé.

user_agentchaîne de caractères

Valeur à envoyer avec l'en-tête User-Agent:. Cette valeur ne doit être utilisée que si l'agent utilisateur n'est pas spécifié dans l'option de contexte header ci-dessus.

Par défaut, la valeur de l'option de configuration user_agent du fichier php.ini sera utilisée.

contentchaîne de caractères

Les données supplémentaires à envoyer après les en-têtes. Typiquement utilisées lors des requêtes POST ou PUT.

proxychaîne de caractères

URI de l'adresse du proxy. (e.g. tcp://proxy.example.com:5100).

request_fulluribooléen

Lorsque défini à true, l'URI entière sera utilisée lors de la construction de la requête. (e.g. GET http://www.example.com/path/to/file.html HTTP/1.0). Bien que ce format de demande ne soit pas standard, certains serveurs de proxy le demandent.

Par défaut, vaut false.

follow_locationint

Suit les redirections Location. À définir à 0 pour désactiver.

Par défaut, vaut 1.

max_redirectsint

Le nombre maximal de redirections à suivre. La valeur 1 ou inférieure signifie qu'aucune redirection ne sera suivie.

Par défaut, vaut 20.

protocol_versionnombre décimal

Version du protocole HTTP.

Par défaut, vaut 1.1 à partir de PHP 8.0.0; antérieur à cette version la valeur par défaut était 1.0.

timeoutnombre décimal

Délai maximal d'attente pour la lecture, sous la forme d'un nombre décimal (e.g. 10.5).

Par défaut, la valeur de l'option de configuration default_socket_timeout du fichier php.ini sera utilisée.

ignore_errorsbooléen

Récupère le contenu même lors de la réception d'un code d'échec.

Par défaut, vaut false.

Exemples

Exemple #1 Récupération d'une page et envoi de données POST

<?php

$postdata
= http_build_query(
array(
'var1' => 'du contenu',
'var2' => 'doh'
)
);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);

$context = stream_context_create($opts);

$result = file_get_contents('http://example.com/submit.php', false, $context);

?>

Exemple #2 Ignore les redirections mais récupère les en-têtes et le contenu

<?php

$url
= "http://www.example.org/header.php";

$opts = array('http' =>
array(
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1'
)
);

$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);

// informations sur les en-têtes et métadonnées du flux
var_dump(stream_get_meta_data($stream));

// données actuelles de $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>

Notes

Note: Options de contexte du flux sous-jacent
Des options de contexte supplémentaires peuvent être supportées par le transport sous-jacent. Pour les flux http://, référez-vous aux options de contexte du transport tcp://. Pour les flux https://, référez-vous aux options de contexte du transport ssl://.

Note: Ligne de statut HTTP
Lorsque ce gestionnaire de flux suit une redirection, wrapper_data, retourné par la fonction stream_get_meta_data() ne doit pas contenir obligatoirement la ligne de statut HTTP qui s'applique à des données de contenu à l'index 0.

array ( 'wrapper_data' => array ( 0 => 'HTTP/1.0 301 Moved Permanently', 1 => 'Cache-Control: no-cache', 2 => 'Connection: close', 3 => 'Location: http://example.com/foo.jpg', 4 => 'HTTP/1.1 200 OK', ...
La première requête retourne une 301 (redirection permanente), ainsi, le gestionnaire de flux suit automatiquement la redirection pour récupérer une réponse 200 (index = 4).
To Top