Php CURLOPT_NOBODY选项在不存在的文件上返回意外的HTTP代码200

Php CURLOPT_NOBODY选项在不存在的文件上返回意外的HTTP代码200,php,apache,http,curl,Php,Apache,Http,Curl,在本例中,我有一个名为install64-7的服务器,我将访问它来检查是否存在一个不在服务器上的zip文件。以下PHP代码返回HTTP returncode200,即使服务器上不存在zip文件install64-7 $srcPath = "http://install64-7/TestApp.zip"; $ch = curl_init( $srcPath ); curl_setopt( $ch, CURLOPT_NOBODY, true ); curl_exec( $ch ); $retcode

在本例中,我有一个名为
install64-7
的服务器,我将访问它来检查是否存在一个不在服务器上的zip文件。以下PHP代码返回HTTP returncode
200
,即使服务器上不存在zip文件
install64-7

$srcPath = "http://install64-7/TestApp.zip";
$ch = curl_init( $srcPath );
curl_setopt( $ch, CURLOPT_NOBODY, true );
curl_exec( $ch );
$retcode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
curl_close( $ch );
unset( $ch );
var_dump($retcode);
exit;

如果我删除选项
CURLOPT\u NOBODY
,请求将给出
404
!请参见第二个请求的屏幕截图

$srcPath = "http://install64-7/TestApp.zip";
$ch = curl_init( $srcPath );
//curl_setopt( $ch, CURLOPT_NOBODY, true );
curl_exec( $ch );
$retcode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
curl_close( $ch );
unset( $ch );
var_dump($retcode);
exit;

这怎么可能,我错过了什么?这个选项的魔法是什么?
感谢您提供的任何帮助

CURLOPT\u与“正常”HTTP GET相比,设置为TRUE的任何人都不会发出HTTP HEAD请求


如果您因此获得不同的repsonse代码,这仅仅是因为服务器决定以不同的方式响应—尽管根据HTTP规范不应该这样做。

CURLOPT\u与“正常”HTTP get相比,设置为TRUE的任何人都不会发出HTTP HEAD请求


如果您因此获得不同的repsonse代码,这仅仅是因为服务器决定以不同的方式响应—尽管根据HTTP规范不应该这样做。

CURLOPT\u与“正常”HTTP get相比,设置为TRUE的任何人都不会发出HTTP HEAD请求


如果您因此获得不同的repsonse代码,这仅仅是因为服务器决定以不同的方式响应—尽管根据HTTP规范不应该这样做。

CURLOPT\u与“正常”HTTP get相比,设置为TRUE的任何人都不会发出HTTP HEAD请求



如果您因此获得不同的repsonse代码,这仅仅是因为服务器决定以不同的方式响应—尽管根据HTTP规范不应该这样做。

请发布实际的HTTP流量(请求+响应头)。添加了请求+响应头您在浏览器上试过吗?firefox+插件实时http头。检查服务器是否返回404上的200。是的,这些标题来自firefox中的firebug。。。404的状态是200。häh-现在我真的很困惑。你能发布实际的HTTP流量吗(请求+响应标题)。添加了请求+响应标题你在浏览器上试过这个吗?firefox+插件实时http头。检查服务器是否返回404上的200。是的,这些标题来自firefox中的firebug。。。404的状态是200。häh-现在我真的很困惑。你能发布实际的HTTP流量吗(请求+响应标题)。添加了请求+响应标题你在浏览器上试过这个吗?firefox+插件实时http头。检查服务器是否返回404上的200。是的,这些标题来自firefox中的firebug。。。404的状态是200。häh-现在我真的很困惑。你能发布实际的HTTP流量吗(请求+响应标题)。添加了请求+响应标题你在浏览器上试过这个吗?firefox+插件实时http头。检查服务器是否返回404上的200。是的,这些标题来自firefox中的firebug。。。404的状态是200。现在我真的很困惑。谢谢你的解释!嗯,我正在使用apache2的标准debian包(2.2.22-13+deb7u1)。那么,在apache设置中发生这种未指定的行为会有什么不同呢?可以在一段时间内避免这个问题。。。现在我又面临这个问题。我已经检查了我的apache设置,自安装以来,这些设置没有更改。任何关于apache为何如此反应的建议-无论HTTP规范如何,这似乎都是apache的标准行为:(哦,今天找到了,实际上另一个非默认模块也已经就位,它被指定用于执行此操作。感谢您的解释!好吧,我正在使用apache2的标准debian包(2.2.22-13+deb7u1)。那么,apache设置中发生这种未指定的行为会有什么不同呢?可以在一段时间内避免此问题…现在我再次面临此问题。我已检查了我的apache设置,它们自安装以来从未更改过。有任何建议说明apache为何会做出这样的反应-无论HTTP规范如何,这似乎是apache标准行为:(哦,今天找到了,实际上另一个非默认模块也已经准备好了,它被指定用来做这件事。谢谢你的解释!好吧,我正在使用apache2的标准debian包(2.2.22-13+deb7u1)。那么,apache设置中发生这种未指定的行为会有什么不同呢?可以在一段时间内避免此问题…现在我再次面临此问题。我已检查了我的apache设置,它们自安装以来从未更改过。有任何建议说明apache为何会做出这样的反应-无论HTTP规范如何,这似乎是apache标准行为:(哦,今天找到了,实际上另一个非默认模块也已经准备好了,它被指定用来做这件事。谢谢你的解释!好吧,我正在使用apache2的标准debian包(2.2.22-13+deb7u1)。那么,apache设置中发生这种未指定的行为会有什么不同呢?可以在一段时间内避免此问题…现在我再次面临此问题。我已检查了我的apache设置,它们自安装以来从未更改过。有任何建议说明apache为何会做出这样的反应-无论HTTP规范如何,这似乎是apach标准行为:(哦,今天发现了它,实际上另一个非默认模块也在使用中,它被指定用于执行此操作。