如何在PHP Curl中设置Header中的SiteAuth身份认证信息?
PHP Curl中设置SiteAuth头信息实现认证的方法
原有可正常运行的代码
以下是原本用于通过API获取列表详情的PHP代码:
$url = "http://api.example.com/apiListing/get"; $input = array ( 'userId' => 'xxx', // 认证用userId 'loginToken' => 'xxx', // 认证用loginToken "id" => "11011947" ); $data_string = http_build_query($input); $url = "$url?$data_string"; $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET, true); // 原代码此处参数错误,CURLOPT_HTTPGET需传布尔值 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); echo $result;
新的认证要求
现在站点授权方式改为仅通过Header中的userId和Token进行SiteAuth认证,API规范提供的curl示例如下:
curl --request POST -H "Content-Type=multipart/form-data" -H "SiteAuth:<userId>:<Token>" "https://api.example.com/site/listing?id=<listingId>"
修改后的PHP Curl代码
根据新的API要求,修改后的代码如下:
// 设置API地址和列表ID $url = "https://api.example.com/site/listing?id=11011947"; // 认证信息 $userId = 'xxx'; $token = 'xxx'; $ch = curl_init(); // 设置请求URL curl_setopt($ch, CURLOPT_URL, $url); // 设置为POST请求 curl_setopt($ch, CURLOPT_POST, true); // 构造请求头 $headers = array( 'Content-Type: multipart/form-data', "SiteAuth: {$userId}:{$token}" ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 设置返回结果不直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行请求并获取结果 $result = curl_exec($ch); // 关闭Curl资源 curl_close($ch); echo $result;
关键修改点说明
- 将请求方式从GET改为POST,对应curl示例中的
--request POST - 通过
CURLOPT_HTTPHEADER设置自定义请求头,包含Content-Type和SiteAuth字段,其中SiteAuth的格式为userId:Token - 列表ID直接拼接在URL的query参数中,无需再放到请求体或原有的认证参数里
- 修正了原代码中
CURLOPT_HTTPGET的参数错误,该选项只需传入布尔值控制是否使用GET请求
内容的提问来源于stack exchange,提问作者matgrez
相关产品推荐
相关产品推荐

