You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:05:06