PHP cURL - 具有基本身份验证的HTTP GET 403
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP cURL - 具有基本身份验证的HTTP GET 403相关的知识,希望对你有一定的参考价值。
首先,我的php和cURL体验总计为0,所以请忍受我的无知。 无论如何,我正在尝试使用Seneye API重新获得JSON:https://api.seneye.com/api/resources/view/q/device_get
我对这个过程有一个基本的了解,并且得到了我所需要的所有:id和基本身份验证:我使用https://www.hurl.it测试了所有这些,以确保所有凭据都正确,并检索完整的JSON。
我阅读并设法将以下PHP放在一起
<?php
$username = 'addusername'; //Example entry
$password = 'addpassword'; //Example entry
$URL = 'https://api.seneye.com/v1/devices/3442?IncludeState=1'; //Actual ID code different
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "HTTP CODE:: " . $status_code;
curl_close ($ch);
$json = json_decode($result, true);
echo "<br><br>";
print_r($json);
?>
但是我收到的是HTTP代码403作为回报,其中包含“Method not Allowed”消息。所以我只能假设我使用身份验证的方式有问题?!
任何和所有的帮助/建议表示赞赏。谢谢
答案
根据您提供的链接中的文档,URL应该在表单中
https://api.seneye.com/v1/devices/3442?user=***&pwd=***
其中用户名和密码作为查询字符串参数发送,而不是在授权标头中发送。
所以我认为您的PHP代码应如下所示:
<?php
$username = 'addusername'; //Example entry
$password = 'addpassword'; //Example entry
$URL = 'https://api.seneye.com/v1/devices/3442?IncludeState=1&user='.$username.'&pwd='.$password; //Actual ID code different
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "HTTP CODE:: " . $status_code;
curl_close ($ch);
$json = json_decode($result, true);
echo "<br><br>";
print_r($json);
?>
请注意,从技术上讲,这不是正式定义的基本身份验证,而是自定义方案。从安全角度来看,它也不理想,因为浏览器和服务器通常会记录访问过的URL,这意味着凭证最终通常以纯文本形式存储在许多不同的地方。
以上是关于PHP cURL - 具有基本身份验证的HTTP GET 403的主要内容,如果未能解决你的问题,请参考以下文章