HTTP コンテキストオプション
HTTP コンテキストオプション — HTTP コンテキストオプションの一覧
説明
http://
および https://
トランスポート用のコンテキストオプションです。
オプション
-
method
string
-
リモートサーバーでサポートされる GET
、
POST
あるいはその他の HTTP メソッド。
デフォルトは GET
です。
-
リクエストに付加されるヘッダ。ここで指定した値が
(User-agent:
、Host:
、
および Authentication:
などの)
他の値を上書きすることもあります。
これは、後にLocation:
によってリダイレクトが行われる場合でも同様です。
よって、follow_location
が有効になっている場合、
Host:
ヘッダを設定することはお勧めしません。
-
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(
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
)
を取得しました。