Liste der HTTP-Kontextoptionen

# HTTP-Kontextoptionen

HTTP-Kontextoptionen — Liste der HTTP-Kontextoptionen

### Beschreibung

Kontextoptionen für die Transportprotokolle `http://` und `https://`.

### Optionen

`method` string

  `GET`, `POST` oder eine andere vom entfernten Server unterstützte HTTP-Methode.

  Der Standardwert ist `GET`.

`header` array oder string

  Zusätzliche Kopfzeilen, die während der Anfrage gesendet werden. Die Werte in dieser Option überschreiben andere Werte (wie `User-Agent:`, `Host:`, und `Authentication:`), selbst wenn sie `Location:`-Weiterleitungen folgen. Es ist daher nicht empfehlenswert, eine `Host:`-Kopfzeile zu setzen, wenn `follow_location` aktiviert ist.

  Der Wert der Zeichenkette sollte aus `Schlüssel: Wert`-Paaren bestehen, die durch `\r\n` begrenzt sind, z. B. `"Content-Type: application/json\r\nConnection: close"`. Der Wert des Arrays sollte eine Liste von `Schlüssel: Wert`-Paaren sein, z. B. `["Content-Type: application/json", "Connection: close"]`.

`user_agent` string

  Der Wert, der mit der Kopfzeile `User-Agent:` gesendet wird. Dieser Wert wird nur verwendet, wenn der User-Agent nicht in der obigen Kontextoption `header` angegeben wurde.

  Standardmäßig wird der Wert von user_agent aus der php.ini verwendet.

`content` string

  Zusätzliche Daten, die nach den Kopfzeilen gesendet werden; wird in der Regel bei POST- oder PUT-Anfragen verwendet.

`proxy` string

  Der URI, der die Adresse des Proxy-Servers angibt (z. B. `tcp://proxy.example.com:5100`).

`request_fulluri` bool

  Wenn auf `true` gesetzt, wird beim Aufbau der Anfrage der gesamte URI verwendet (z. B. `GET http://www.example.com/path/to/file.html HTTP/1.0`). Dies ist zwar kein Standard-Anfrageformat, wird aber von einigen Proxy-Servern verlangt.

  Der Standardwert ist `false`.

`follow_location` int

  Folgt den Weiterleitungen der Kopfzeile `Location`; zum Deaktivieren auf 0 setzen.

  Der Standardwert ist `1`.

`max_redirects` int

  Die maximale Anzahl der zu verfolgenden Weiterleitungen. Der Wert `1` oder weniger bedeutet, dass keine Weiterleitungen verfolgt werden.

  Der Standardwert ist `20`.

`protocol_version` float

  Die Version des HTTP-Protokolls.

  Seit PHP 8.0.0 ist der Standardwert `1.1`; vorher war es `1.0`.

`timeout` float

  Das Zeitlimit für Lesevorgänge in Sekunden, angegeben durch einen Wert vom Typ float (z. B. `10.5`).

  Standardmäßig wird der Wert von default_socket_timeout aus der php.ini verwendet.

`ignore_errors` bool

  Ruft den Inhalt auch dann ab, wenn ein Fehlerstatus vorliegt.

  Der Standardwert ist `false`.

### Beispiele

Beispiel #1 Abrufen einer Seite mit Übermittlung von POST-Daten

    <?php

    $postdata = http_build_query(
        [
            'var1' => 'some content',
            '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);

    ?>

Beispiel #2 Weiterleitungen ignorieren, aber Kopfzeilen und Inhalt abrufen

    <?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);

    // die Header-Informationen sowie die Metadaten über den Stream
    var_dump(stream_get_meta_data($stream));

    // die eigentlichen Daten von $url
    var_dump(stream_get_contents($stream));
    fclose($stream);
    ?>

### Anmerkungen

> Hinweis: Kontextoptionen für den zugrundeliegenden Socket-Stream
> Vom zugrundeliegenden Transport können zusätzliche Kontextoptionen unterstützt werden. Für `http://`-Streams, siehe Kontextoptionen für das Transportprotokoll `tcp://`. Für `https://`-Streams, siehe Kontextoptionen für das Transportprotokoll `ssl://`.

> Hinweis: HTTP-Statuszeile
> Wenn dieser Stream-Wrapper einer Weiterleitung (Redirect) folgt, ist der Inhalt von Index `0` in den von stream_get_meta_data() zurückgegebenen `wrapper_data` nicht unbedingt die HTTP-Statuszeile für diesen Inhalt.

>     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',
>         ...

> Die erste Anfrage lieferte eine `301` (permanente Weiterleitung), sodass der Stream-Wrapper automatisch der Weiterleitung folgte, bei der er eine `200`-Antwort erhielt (index = `4`).

### Siehe auch

- http://
- Socket-Kontextoptionen
- SSL-Kontext-Optionen

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open