你好,我有命令行代码:
curl 'http://192.168.0.1:80/' -H 'Authorization: Basic my_auth'
在php中:
$process = curl_init($ip);
//just for "shore"
curl_setopt($data, CURLOPT_HTTPHEADER,
array(
"Authorization: Basic " . base64_encode($username . ":" . $password)
));
curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($process, CURLOPT_USERPWD, $login . ":" . $password);
curl_setopt($process, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($process, CURLOPT_TIMEOUT, 10);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_VERBOSE, 1);
curl_setopt($process, CURLOPT_HEADER, 1);
$return = curl_exec($process);
在结果中我看到:401...在apache2日志中:
>
获取 / HTTP/1.0 授权:基本 my_code 主机:192.168.0.1 接受:/
HTTP 1.0,假设在正文之后关闭
这不是使用curl发送基本Auth的方式。对于Basic,预期的头是< code>Authorization: Basic
curl -u "user:pass" http://<endpoint>/
如果您“手动”发送标头,您必须先自己对其进行Bas64编码。
现在,您的PHP代码是正确的,而curl
调用不正确。这意味着服务如何解释授权
存在问题。