PHP file_get_contents() and setting request headers PHP file_get_contents() and setting request headers php php

PHP file_get_contents() and setting request headers


Actually, upon further reading on the file_get_contents() function:

// Create a stream$opts = [    "http" => [        "method" => "GET",        "header" => "Accept-language: en\r\n" .            "Cookie: foo=bar\r\n"    ]];// DOCS: https://www.php.net/manual/en/function.stream-context-create.php$context = stream_context_create($opts);// Open the file using the HTTP headers set above// DOCS: https://www.php.net/manual/en/function.file-get-contents.php$file = file_get_contents('http://www.example.com/', false, $context);

You may be able to follow this pattern to achieve what you are seeking to, I haven't personally tested this though. (and if it doesn't work, feel free to check out my other answer)


Here is what worked for me (Dominic was just one line short).

$url = "";$options = array(  'http'=>array(    'method'=>"GET",    'header'=>"Accept-language: en\r\n" .              "Cookie: foo=bar\r\n" .  // check function.stream-context-create on php.net              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad   ));$context = stream_context_create($options);$file = file_get_contents($url, false, $context);


You can use this variable to retrieve response headers after file_get_contents() function.

Code:

  file_get_contents("http://example.com");  var_dump($http_response_header);

Output:

array(9) {  [0]=>  string(15) "HTTP/1.1 200 OK"  [1]=>  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"  [2]=>  string(29) "Server: Apache/2.2.3 (CentOS)"  [3]=>  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"  [4]=>  string(27) "ETag: "280100-1b6-80bfd280""  [5]=>  string(20) "Accept-Ranges: bytes"  [6]=>  string(19) "Content-Length: 438"  [7]=>  string(17) "Connection: close"  [8]=>  string(38) "Content-Type: text/html; charset=UTF-8"}