# 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` chaî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`.

`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` chaî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.

`content` chaî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.

`proxy` chaîne de caractères

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

`request_fulluri` boolé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_location` int

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

  Par défaut, vaut `1`.

`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` nombre 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`.

`timeout` nombre 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_errors` boolé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(
[
'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 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`).

### Voir aussi

- http://
- Options de contexte des sockets
- Options de contexte SSL