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

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

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

### 説明

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

### オプション

`method` string

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

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

`header` array あるいは string

  リクエストに付加されるヘッダ。ここで指定した値が (User-agent:、Host:、 および Authentication: などの) 他の値を上書きすることもあります。

`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` boolean

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

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

`follow_location` integer

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

  デフォルトは 1 です。

`max_redirects` integer

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

  デフォルトは 20 です。

`protocol_version` float

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

  デフォルトは 1.0 です。

  > 注意:

  > 5.3.0 より前のバージョンの PHP では chunked transfer decoding を実装していません。 この値を 1.1 に設定するなら、 1.1 準拠にするのは自分の責任となります。

`timeout` float

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

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

`ignore_errors` boolean

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

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

### 変更履歴

バージョン | 説明
--- | ---
5.3.4 | `follow_location` が追加されました。
5.3.0 | `protocol_version` に 1.1 を設定した場合に、 chuned transfer decoding をサポートするようになりました。
5.2.10 | `ignore_errors` が追加されました。
5.2.10 | `header` に数値添字の配列を使用できるようになりました。
5.2.1 | `timeout` が追加されました。
5.1.0 | HTTP プロキシを使用した HTTPS のプロキシが追加されました。
5.1.0 | `max_redirects` が追加されました。
5.1.0 | `protocol_version` が追加されました。

### 例

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

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

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

`<?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);
// ヘッダ情報およびストリームのメタデータ
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 Permantenly',
>         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 コンテキストオプション