file_get_contents返回401的问题

作者: harde 分类: PHP,开发相关 发布时间: 2015-11-09 14:13

今天工作时遇到个比较奇怪的问题。
Axis的网络摄像头。
有HTTP基本身份验证。

以前获取图像都是用http://user:pass@ip/…… 这样的方式去获取,也没有出现过什么问题。
直到今天。摄像头莫名其妙自己升级了固件(千万只XXX在心中奔腾而过……)

就导致了获取图像时出现了401错误。
翻遍了Axis的手册也没查出个所以然。

于是用CURL重写了这里。

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $imageUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ;
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $output = curl_exec($ch);
    curl_close($ch);

注意这里

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ;

之前尝试用CURLAUTH_BASIC竟然不!好!用!!!
不知道Axis这个固件到底干了啥……
已经给Axis发邮件了……等待回复中……
[danger]
有懂为啥的,麻烦给留个言。
不胜感激。
[/danger]

另外,不想把用户密码写在网址中的,可以这样:
(我的那个是因为不想改配置文件,就凑服用了。。。。。)

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $imageUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");  
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ;
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $output = curl_exec($ch);
    curl_close($ch);

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注