连接在使用PHP cURL检索图像时拒绝

时间:2017-08-10 22:40:58

标签: php curl

尝试使用PHP cURL远程检索网络摄像头图像时,出现“连接被拒绝”错误。 如果我尝试使用本地计算机上的浏览器中的URL检索图像,系统会提示我输入凭据,然后它会为我提供图像。为什么会这样?在本地或在另一台服务器上的脚本上,谁在要求图像应该没有任何区别?对于

我的代码:

    <?php 
$token = "user:password";
$url = "http://000.000.000.000:000/cgi-bin/image.jpg";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_USERPWD, $token);
/*curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);*/                    
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

if( curl_exec($ch) === false ){
    echo curl_error($ch);
}else{
    $data = curl_exec($ch);
}
curl_close($ch);

echo "<pre>";
print_r($data);
echo "</pre>";
?>

1 个答案:

答案 0 :(得分:1)

这很可能是Basic access authentication。如果你在浏览器中找到一个网址,它会显示一个登录弹出窗口,但你也可以在网址中包含用户名和密码,如下所示:

https://Aladdin:OpenSesame@www.example.com/index.html

在这种情况下,它将是:

$url = "http://user:password@000.000.000.000:000/cgi-bin/image.jpg";

编辑由于您使用的是curl,因此它具有发送身份验证标头的功能。

curl_setopt($process, CURLOPT_USERPWD, $username.':'.$password);

在这种情况下:

curl_setopt($process, CURLOPT_USERPWD, $token);

另请参阅this answer