ai didi

PHP get_headers() 报告与 CURL 不同的 header

转载 作者:可可西里 更新时间:2023-11-01 12:33:45 24 4
gpt4 key购买 nike

get_headers() 怎么可能返回与通过 CURL 获取它们不同的结果?这是我的代码:

header("Content-type: text/plain");
$url = 'http://www.foxbusiness.com/index.html';

echo "get_headers() headers:\n\n";
$headers = get_headers($url);
print_r($headers);

echo "\n\nCURL headers\n\n";
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $url ) );
$headers = explode( "\n", curl_exec( $curl ) );
curl_close( $curl );
print_r($headers);

这是结果:

get_headers() headers:

Array
(
[0] => HTTP/1.0 403 Forbidden
[1] => Server: AkamaiGHost
[2] => Mime-Version: 1.0
[3] => Content-Type: text/html
[4] => Content-Length: 283
[5] => Expires: Fri, 31 Aug 2012 07:29:14 GMT
[6] => Date: Fri, 31 Aug 2012 07:29:14 GMT
[7] => Connection: close
)


CURL headers

Array
(
[0] => HTTP/1.1 200 OK
[1] => Server: Apache
[2] => X-FoxNews-EdgeTTL: 2m
[3] => Content-Type: text/html;charset=UTF-8
[4] => Cache-Control: max-age=64
[5] => Date: Fri, 31 Aug 2012 07:29:14 GMT
[6] => Connection: keep-alive
[7] =>
[8] =>
)

最佳答案

get_headers 将默认执行 GET 请求,而您将 cURL 配置为执行 HEAD 请求。首先通过放置不同的 HTTP stream context 使请求与 cURL 发送的请求相同using HEAD for the request method.

此外,服务器似乎需要一个用户代理,因此请确保您 provide user_agent in php.ini或将其添加到流上下文中。

以下应该有效:

stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD',
'user_agent' => "PHP"
)
)
);

参见 http://codepad.viper-7.com/cOO9XS

请注意,stream_context_set_default 修改了全局默认 Stream Context,因此一旦调用上述方法,对使用此流包装器的其他方法的任何调用现在都将执行 HEAD 请求。与 file_get_contents 不同,get_headers 不允许通过函数参数提供自定义流上下文。换句话说,确保在获得 header 后将方法改回 GET。

关于PHP get_headers() 报告与 CURL 不同的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210816/

24 4 0
文章推荐: php - DOM getElementbyId 无法正常工作
文章推荐: php - 从 iis7 中的 wordpress URL 中删除 index.php
文章推荐: php - 为什么 strtotime ('x' ) 返回明天的日期
文章推荐: PHP 数组作为数组键
可可西里
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com