如何从PHP发送不完整的HTTP请求?

NeD*_*ark 0 php http http-headers

我需要检查远程文件是否在线并且它们没有更改.问题是这些文件很大,所以我只想读取http标头,然后中止请求.结果将基于响应状态代码和内容长度字段.

我怎么能在PHP中做到这一点?

Nul*_*ion 5

你可以使用这个get_headers()功能.

如果您更喜欢cURL,您可以使用CURLOPT_NOBODY:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$headers = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

  • 这两种方法之间存在微妙(但可能很重要)的差异.`get_headers()`发送一个正常的GET请求,并在收到头后立即销毁连接.带有`... NOBODY`的cURL发送一个HEAD请求.cURL方法稍微快一点,但也可能返回不完整/不正确的图片,具体取决于您请求的对象和您请求的服务器.这些都不允许你执行除GET请求之外的任何事情并且只返回头部(HEAD应该模拟GET). (3认同)