1

我正在使用此代码来获取 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 状态代码。是否有可能从最后一页获取标题?或者是否有另一种方法可以在仍然使用引荐来源隐藏服务的同时实现这一目标?

4

1 回答 1

1

您不需要第三方服务在此类请求中隐藏您的referer,您可以将其设置为您需要的任何内容,但是您不能使用该get_headers功能来做到这一点。你可以用file_get_contentsand来做stream_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 URL 的 HTTP 请求之后填充的一种魔术变量,并且它仅在本地范围内可用,即,在您调用发出 HTTP 请求的函数之后,而不是在另一个范围内之后执行的函数。的内容与函数$http_response_header的结果基本相同get_header()

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

于 2013-05-04T22:31:46.303 回答