发送一个HTTP请求,告诉服务器只返回标题而没有正文?

时间:2012-08-01 07:28:10

标签: http curl webserver request response

您是否可以使用HTTP请求发送标头,告知网络服务器仅向您发送回复标头但没有正文内容?

我正在使用cURL发出此类请求,但从技术上讲,我认为应该可以将简单的标头作为请求的一部分发送。

例如,存在304 Not Modified HTTP Response Code。当您使用缓存标记或日期时间信息向服务器发出请求时,服务器可以检测到该请求,并仅返回标头作为响应,告知用户代理将其缓存用作响应。这意味着在带宽方面,服务器的响应非常非常小。

但是有没有可以发送到服务器的标头,使服务器只返回标题而没有正文内容?

这里的想法是发出HTTP请求,否则可能返回大量数据,非常小。例如,可以返回JSON数据或日志的API调用,实际上用户代理唯一感兴趣的是确保请求通过而没有其他任何内容。这是为了在主体可能存在的情况下最小化进出服务器的带宽,但在用户代理正在进行的任何情况下都不需要。

虽然可以设计一个听取特定自定义标题或其他东西的API,但我不应该这样做,除非我必须这样做。但我一直无法找到是否有标准化的方法来发出HTTP请求,告知服务器不发送任何正文内容?

2 个答案:

答案 0 :(得分:16)

如果服务器支持它,则会有HEAD操作(与GET或POST相反)。这告诉服务器只发送标题,而不是正文。

  

HEAD方法与GET相同,只是服务器不能   在响应中返回一个消息正文。

答案 1 :(得分:3)

您正在寻找动词HEAD。如果你正在使用CURL和PHP,这将解决问题:

curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $c, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $c, CURLOPT_HEADER, 1 );
curl_setopt( $c, CURLOPT_NOBODY, true );

如果您正在使用PHP(并且在不同的情况下它也可以计算),脚本将继续运行until any output is sentREQUEST_METHOD下的注释)。因此,如果您担心服务器压力,如果适合,您可能需要其他东西。

对我来说,你看起来更像是在寻找'ping',所以为什么不简单地请求一个什么都不做但只返回某种确定的文件,甚至可能只是HTTP 200 OK(即空文件) ?