HTTP コンテキストオプション
  HTTP コンテキストオプション — HTTP コンテキストオプションの一覧
  
 
 
  説明
  
   http:// および https://
   トランスポート用のコンテキストオプションです。
  
  
 
  オプション
  
   
    
     - 
      methodstring
- 
      
       リモートサーバーでサポートされる GET、POSTあるいはその他の HTTP メソッド。
 
       デフォルトは GETです。
 
- 
      
       リクエストに付加されるヘッダ。ここで指定した値が
       (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_agentstring
- 
      
       User-Agent:ヘッダとして送信する値。上で説明したheaderオプションで user-agent が
       定義されていない場合のみ使用されます。
 
       デフォルトでは、php.ini の
       user_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(
    [
        '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)
    を取得しました。