尝试使用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>";
?>
答案 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。