11.4. Fetching a URL with Headers
Problem
You want to retrieve a URL that requires specific headers to be sent with the request for the page.
Solution
Use the
cURL extension and the
CURLOPT_HTTPHEADER option:
$c = curl_init('http://www.example.com/special-header.php');
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HTTPHEADER, array('X-Factor: 12', 'My-Header: Bob'));
$page = curl_exec($c);
curl_close($c);If cURL isn’t available, use the addHeader( )
method in HTTP_Request:
require 'HTTP/Request.php';
$r = new HTTP_Request('http://www.example.com/special-header.php');
$r->addHeader('X-Factor',12);
$r->addHeader('My-Header','Bob');
$r->sendRequest();
$page = $r->getResponseBody();Discussion
cURL has special options for setting the
Referer
and User-Agent
request headers — CURLOPT_REFERER and
CURLOPT_USERAGENT:
$c = curl_init('http://www.example.com/submit.php');
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, 'http://www.example.com/form.php');
curl_setopt($c, CURLOPT_USERAGENT, 'CURL via PHP');
$page = curl_exec($c);
curl_close($c);See Also
Recipe 11.14 explains why
“referrer” is often misspelled
“referer” in web programming
contexts; documentation on curl_setopt( ) at
http://www.php.net/curl-setopt; the PEAR
HTTP_Request class at
http://pear.php.net/package-info.php?package=HTTP_Request.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access