Socket context options
FTP context options
Context options and parameters
PHP Manual

# HTTP context options

HTTP context option listing

### Description

Context options for http:// and https:// transports.

### Options

`method` string

  `GET`, `POST`, or any other HTTP method supported by the remote server.

  Defaults to `GET`.

`header` string

  Additional headers to be sent during request. Values in this option will override other values (such as User-agent:, Host:, and Authentication:).

`user_agent` string

  Value to send with User-Agent: header. This value will only be used if user-agent is not specified in the header context option above.

  By default the user_agent php.ini setting is used.

`content` string

  Additional data to be sent after the headers. Typically used with POST or PUT requests.

`proxy` string

  URI specifying address of proxy server. (e.g. tcp://proxy.example.com:5100).

`request_fulluri` boolean

  When set to `TRUE`, the entire URI will be used when constructing the request. (i.e. GET http://www.example.com/path/to/file.html HTTP/1.0). While this is a non-standard request format, some proxy servers require it.

  Defaults to `FALSE`.

`follow_location` integer

  Follow Location header redirects. Set to 0 to disable.

  Defaults to 1.

`max_redirects` integer

  The max number of redirects to follow. Value 1 or less means that no redirects are followed.

  Defaults to 20.

`protocol_version` float

  HTTP protocol version.

  Defaults to 1.0.

  > Note:

  > PHP prior to 5.3.0 does not implement chunked transfer decoding. If this value is set to 1.1 it is your responsibility to be 1.1 compliant.

`timeout` float

  Read timeout in seconds, specified by a float (e.g. 10.5).

  By default the default_socket_timeout php.ini setting is used.

`ignore_errors` boolean

  Fetch the content even on failure status codes.

  Defaults to `FALSE`.

### Changelog

Version | Description
--- | ---
5.3.4 | Added `follow_location`.
5.3.0 | The `protocol_version` supports chunked transfer decoding when set to 1.1.
5.2.10 | Added `ignore_errors`.
5.2.10 | The `header` can now be an numerically indexed array.
5.2.1 | Added `timeout`.
5.1.0 | Added HTTPS proxying through HTTP proxies.
5.1.0 | Added `max_redirects`.
5.1.0 | Added `protocol_version`.

### Examples

Example #1 Fetch a page and send POST data

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

Example #2 Ignore redirects but fetch headers and content

`<?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);
// header information as well as meta data
// about the stream
var_dump(stream_get_meta_data($stream));
// actual data at $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>`

### Notes

> Note: Underlying socket stream context options
> Additional context options may be supported by the underlying transport For http:// streams, refer to context options for the tcp:// transport. For https:// streams, refer to context options for the ssl:// transport.

> Note: HTTP status line
> When this stream wrapper follows a redirect, the wrapper_data returned by stream_get_meta_data might not necessarily contain the HTTP status line that actually applies to the content data at index 0.

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

> The first request returned a 301 (permanent redirect), so the stream wrapper automatically followed the redirect to get a 200 response (index = 4).

### See Also

- http://
- Socket context options
- SSL context options