Options de contexte HTTP
PHP Manual
PHP Manual»Options et paramètres de contexte»Options de contexte HTTP

Options de contexte HTTP

Options de contexte HTTP — Liste des options de contexte HTTP

Description

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

Options

method string

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

Par défaut, vaut GET.

header array 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é.

Une chaîne de caractères doit contenir des paires Clé : valeur délimitées par \r\n, par exemple : "Content-Type: application/json\r\nConnection: close". Un tableau doit contenir une liste de paires Clé : valeur, par exemple : ["Content-Type: application/json", "Connection: close"].

user_agent string

Valeur à envoyer avec l'en-tête User-Agent:. Cette valeur ne sera 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.

content string

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

proxy string

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

request_fulluri bool

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_location int

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

Lorsque cette option n'est pas définie, les redirections ne sont suivies que pour les codes de réponse 300, 301, 302, 303, 307 et 308. La définir à 1 n'est pas équivalent : toute réponse portant un en-tête Location est alors suivie, quel que soit son code de réponse.

max_redirects int

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_version float

Version du protocole HTTP.

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

timeout float

Délai maximal d'attente pour la lecture en secondes, 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_errors bool

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

Par défaut, vaut false.

uri_parser_class string ou null

La classe à utiliser pour analyser les URI. Lorsque cette option vaut null, le comportement historique fondé sur parse_url() est utilisé. Les valeurs acceptées sont Uri\Rfc3986\Uri (analyseur conforme à la RFC 3986) et Uri\WhatWg\Url (analyseur conforme au standard WHATWG URL). Les implémentations personnalisées écrites en PHP ne sont pas supportées.

Par défaut, vaut null.

Historique

Version Description
8.5.0 L'option uri_parser_class a été ajoutée.

Exemples

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

<?php

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

$opts = [
    'http' => [
        '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 = [
    'http' => [
        '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 réelles 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://, se référer aux options de contexte du transport tcp://. Pour les flux https://, se référer aux options de contexte du transport ssl://.

Note: Ligne de statut HTTP

Lorsque ce gestionnaire de flux suit une redirection, le wrapper_data retourné par la fonction stream_get_meta_data() ne contient pas nécessairement la ligne de statut HTTP qui s'applique aux 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