我正在尝试执行可以在终端中成功执行的 curl 命令,但它在 PHP 脚本中失败并出现以下错误:
HTTP/1.1 401 Unauthorized Access-Control-Allow-Origin: * Access-Control-Request-Method: * Cache-Control: no-cache Content-Type: application/json; charset=utf-8 日期:2012 年 2 月 6 日星期一 00:38:56 GMT 服务器:nginx/1.0.4 Set-Cookie:_parse_session=XXXXXX;域=.parse.com; 路径=/;expires=Sun, 06-Feb-2022 00:38:56 GMT; HttpOnly 状态:401 未经授权的 WWW-Authenticate:Basic realm="Parse" X-Runtime:0.002486 X-UA-Compatible:IE=Edge,chrome=1 Content-Length:24 Connection:keep-alive {"error":"unauthorized "}
这是在终端中执行成功的命令:
curl -H "Accept: application/json" -H "X-Parse-Application-Id: XXXXXXX" -H "X-Parse-REST-API-Key: XXXXXXXXX" -X GET "https://api.parse. com/1/classes/XXXXXX”
这是PHP代码:
$fields = array('Accept: '=>'application/json',
'X-Parse-Application-Id:' => 'XXXXX',
'X-Parse-REST-API-Key:' => 'XXXXX');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.parse.com/1/classes/XXXX');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_HEADER, $fields);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, 'XXXXXX');
$result = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
有趣的是,在终端中执行时不需要身份验证信息。
帮助将不胜感激。
谢谢
您的标题字段不应:在数组定义中包含:
'X-Parse-REST-API-Key:' => 'XXXXX');
^---remove these
Run Code Online (Sandbox Code Playgroud)
这构成了:字段名称的一部分,因此您实际上是在发送:
X-Parse-REST-API-Key:: XXXXX
^^---note the doubled colons
Run Code Online (Sandbox Code Playgroud)