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

更新WordPress API端点后遇403错误,缺失User-Agent如何修复?

问题分析与修复方案

代码中的核心错误

  • User-Agent头语法错误:$xag = "USER-AGENT": " . $userAgent;这行存在语法错误,应将冒号替换为字符串连接符.,正确写法为$xag = "USER-AGENT: " . $userAgent;,错误语法会导致HTTP头格式无效,服务器无法识别。
  • JSON格式不规范:请求体$content中的字符串使用了单引号(如'someID'),但JSON强制要求字符串用双引号,格式错误会导致API无法解析请求,同时可能触发WAF拦截。
  • 头信息设置冗余:手动拼接User-Agent头容易出错,curl提供了专门的CURLOPT_USERAGENT选项,设置更可靠。

修复后的完整代码

<?php
// transactional send
$userAgent = 'Mozilla/5.0 (Macintosh; Intel somestuff) AppleWebKit/somenumbers (KHTML, like Gecko) Chrome/morenumbers Safari/lastnumbers';

$url = "https://updated.api.net/" . $account . "/api/transactional/send";
$xun = "USERNAME: " . USERNAME;
$xpw = "PASSWORD: " . PASSWORD;
$xac = "ACCOUNT_CODE: " . ACCOUNT_CODE;
// 修复User-Agent头语法
$xag = "USER-AGENT: " . $userAgent;
// 修复JSON字符串引号问题,统一使用双引号
$content = '{
 "message_id": "someID",
 "campaign_id": "anotherID",
 "recipients": ["myemail@yahoo.com"],
 "sending_connection_id": "sendID"
}';

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 推荐使用CURLOPT_USERAGENT替代手动拼接头,注释掉下面的$xag并启用此行更可靠
// curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
     "Content-type: application/json",
    $xun,
    $xpw,
    $xac,
    $xag
));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($status != 200 && $status != 201) {
    error_log("Error: call to URL $url failed with status $status, response $json_response, 
    curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}

echo "<script>alert('$status');</script>";

curl_close($curl);

$response = json_decode($json_response, true);
?>

额外优化建议

  • 生成JSON内容时,优先使用json_encode()从数组转换,彻底避免手动编写JSON的格式错误:
$contentArray = [
    "message_id" => "someID",
    "campaign_id" => "anotherID",
    "recipients" => ["myemail@yahoo.com"],
    "sending_connection_id" => "sendID"
];
$content = json_encode($contentArray);

内容的提问来源于stack exchange,提问作者John Beasley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:40:56