HTTP コンテキストオプションの一覧

# HTTP コンテキストオプション

HTTP コンテキストオプション — HTTP コンテキストオプションの一覧

### 説明

`http://` および `https://` トランスポート用のコンテキストオプションです。

### オプション

`method` string

  リモートサーバーでサポートされる `GET`、 `POST` あるいはその他の HTTP メソッド。

  デフォルトは `GET` です。

`header` array あるいは string

  リクエストに付加されるヘッダ。ここで指定した値が (`User-agent:`、`Host:`、 および `Authentication:` などの) 他の値を上書きすることもあります。 これは、後に`Location:` によってリダイレクトが行われる場合でも同様です。 よって、`follow_location` が有効になっている場合、 `Host:` ヘッダを設定することはお勧めしません。

  文字列の値は、`Key: value` のペアを `\r\n` で区切ったものにすべきです。 たとえば、 `"Content-Type: application/json\r\nConnection: close"` のようにします。 配列の値は、`Key: value` のペアのリストにすべきです。 たとえば、 `["Content-Type: application/json", "Connection: close"]` のようにします。

`user_agent` string

  `User-Agent:` ヘッダとして送信する値。上で説明した `header` オプションで user-agent が 定義されていない場合のみ使用されます。

  デフォルトでは、php.ini の user_agent の設定内容を使用します。

`content` string

  ヘッダの後に送信する追加データ。通常、POST または PUT リクエストの際に使用されます。

`proxy` string

  プロキシサーバーを示す URI (例: `tcp://proxy.example.com:5100`)。

`request_fulluri` bool

  `true` を指定すると、リクエストを生成する際に完全な URI (例: `GET http://www.example.com/path/to/file.html HTTP/1.0`) が用いられます。これは標準のリクエストフォーマットではありませんが、 このようなフォーマットを要求するプロキシサーバーも存在します。

  デフォルトは `false` です。

`follow_location` int

  `Location` のリダイレクトをたどります。 `0` で無効にできます。

  デフォルトは `1` です。

`max_redirects` int

  リダイレクトをたどる最大数。値が `1` 以下の場合は リダイレクトをたどらないことを意味します。

  デフォルトは `20` です。

`protocol_version` float

  HTTP プロトコルのバージョン。

  PHP 8.0.0 以降では、デフォルトは `1.1` です。 それより前のバージョンでは、デフォルトは `1.0` でした。

`timeout` float

  読み込みタイムアウト秒数を float (例 `10.5`) で指定します。

  デフォルトでは php.ini 設定 default_socket_timeout の値を使用します。

`ignore_errors` bool

  ステータスコードが失敗を意味する場合でもコンテンツを取得します。

  デフォルトは `false` です。

### 例

例1 ページの取得と POST データの送信

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

    ?>

例2 リダイレクトを無視し、ヘッダとコンテンツの取得

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

    // ヘッダ情報およびストリームのメタデータ
    var_dump(stream_get_meta_data($stream));

    // $url の実際のデータ
    var_dump(stream_get_contents($stream));
    fclose($stream);
    ?>

### 注意

> 注意: 基盤となるソケットストリームのコンテキストオプション
> これ以外のコンテキストオプションが 基盤となるトランスポート でサポートされています。 `http://` ストリームの場合は、`tcp://` のコンテキストオプションを参照ください。 `https://` ストリームの場合は、`ssl://` のコンテキストオプションを参照ください。

> 注意: HTTP ステータスライン
> このストリームラッパーがリダイレクトをたどると、 stream_get_meta_data() が返す `wrapper_data` のインデックス `0` の内容が必ずしもそのコンテンツの HTTP ステータスラインであるとは限らなくなります。

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

> 最初のリクエストが `301` (permanent redirect) を返したので、ストリームラッパーが自動的にリダイレクト先をたどり、レスポンス `200` (インデックス = `4`) を取得しました。

### 参考

- http://
- ソケットコンテキストオプション
- SSL コンテキストオプション

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