'How to get the referer from remote file_get_contents
I set a PHP script that output JSON like the following:
<?php
// ref.php
print json_encode(array('ref' => $_SERVER["HTTP_REFERER"]), JSON_UNESCAPED_SLASHES);
?>
The above code is all the code in that file. From another file I tried to read the output as follows:
<?php
// ref_index.php
$json = file_get_contents('http://localhost/4test/ref.php');
$data = json_decode($json);
var_dump($data);
?>
The above code returns NULL because the ref.php failed to get the $_SERVER["HTTP_REFERER"] value, so when I replace $_SERVER["HTTP_REFERER"] with any fixed value, such as 'blahh blahh` it returns json object.
My question is: How could I get the referral of file_get_contents() i.e the url that it runs from to get data from my application.
Solution 1:[1]
The referrer is transferred using the Origin header in HTTP. You would need to set that header in your file_get_contents() call. To achieve this, you would need to use a customized stream context using stream_context_create() and pass that as the third param to file_get_contents():
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Origin: SET REFERRER URL HERE"
)
);
echo file_get_contents(
'http://localhost/4test/ref.php',
false,
stream_context_create($opts)
);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | hek2mgl |
