【问题标题】:Guzzle retrieve headers without body, using GETGuzzle 使用 GET 检索没有正文的标头
【发布时间】:2019-10-23 01:31:23
【问题描述】:

我想获取一个url的响应头,例如:

$client = new \GuzzleHttp\Client();
$response = $client->head('http://example.com/');
echo $response->getStatusCode();

我无法使用 HEAD 请求,因为某些 Web 服务器无法识别 HEAD 请求(有时它们返回 403 禁止或内部服务器错误)。

有没有办法在不做 HEAD 的情况下用 guzzle 获得标题?

澄清

我只想获取标题而不是完整的正文响应。想象一下,我想检查一个大文件的标题,如果我使用 get,Guzzle 会下载所有文件,我不想要那个

【问题讨论】:

  • 我认为您可能将 HTTP 动词 HEAD 与对标头的请求混淆了。任何 Guzzle 响应对象都将允许您获取响应的标头。

标签: php guzzle


【解决方案1】:

就像 benJ 所说,您可能会将 HTTP 动词 HEAD 与请求标头混淆。您应该在此请求中使用正确的动词,然后从响应中获取标头。查看这个带有 GET 请求的工作示例:

$client = new \GuzzleHttp\Client();
$response = $client->get('http://example.com/'); // use the method according to the http verb, e.g. POST will be ->post('http://example.com/')
$headers = $response->getHeaders();

【讨论】:

  • 嘿,谢谢。我在原始帖子中添加了解释。我不想下载完整的正文,所以我不能使用 get
  • @giò 所以我认为->head() 是对的,而您遇到的问题是另外一回事。头请求应该像 GET 请求一样工作。如果您在 GET 请求上使用相同的参数,您确定不会得到 403 吗?你可以尝试用->get() 替换->head() 并检查状态码吗?
  • 一些旧的网络服务器不支持 HEAD
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2015-04-06
  • 2020-04-02
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多