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

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

説明

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

オプション

methodstring

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

デフォルトは GET です。

headerarray あるいは string

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

user_agentstring

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

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

contentstring

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

proxystring

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

request_fulluribool

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

デフォルトは false です。

follow_locationint

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

デフォルトは 1 です。

max_redirectsint

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

デフォルトは 20 です。

protocol_versionfloat

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

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

timeoutfloat

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

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

ignore_errorsbool

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

デフォルトは false です。

例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 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) を取得しました。
To Top