隐藏referrer后是否可以使用get_headers?

时间:2013-05-04 22:07:45

标签: php href referrer get-headers

我正在使用此代码来获取HTTP响应:

$url = "http://example.com/";
$headers = get_headers($url);
$header = substr($headers[0], 9, 3);
echo = $header;

效果很好,但我需要隐藏推荐人,所以我使用http://href.li/就像这样:

$url = "http://href.li/?http://example.com/";
$headers = get_headers($url);
$header = substr($headers[0], 9, 3);
echo = $header;
无论最终页面的状态如何,

都会生成200 OK HTTP状态代码。是否有可能从最后一页获得标题?或者还有另一种方法可以在使用引用隐藏服务的同时完成此操作吗?

1 个答案:

答案 0 :(得分:1)

您不需要第三方服务来隐藏此类请求中的引用者,您可以将其设置为您需要的任何内容,但是,您无法使用get_headers函数执行此操作。您可以使用file_get_contentsstream_context_create来完成此操作。在你的情况下,我想它会是这样的:

$URL = 'http://example.com/';
$Context = stream_context_create(array(
    'http' => array(
        'method' => 'HEAD',
        'header' => 'Referer: '
    )
));
file_get_contents($URL, false, $Context);
$ResponseHeaders = $http_response_header;

$header = substr($ResponseHeaders[0], 9, 3);
echo $header;

stream_context_create使用您指定的请求的任何选项创建流上下文,file_get_contents使用该上下文执行请求。然后脚本检查$http_response_header这是一种魔术变量,它在HTTP请求HTTP URL之后填充,并且只在本地范围内可用,即,在您调用函数发出HTTP请求之后,但不是比如,在之后执行的另一个函数中。 $http_response_header的内容与get_header()函数的结果基本相同。

(您也可以在上面的示例中使用GET,但如果您不需要响应正文,HEAD只会获取没有正文的标题。顺便说一句,PHP {{1} }发出一个get_headers请求获取整个响应,包括然后被丢弃的主体。但有时接收服务器或脚本无法处理GET请求或执行某些操作与HEAD不同请求 - 您应该尝试一下,看看它对您有用。)