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

如何让Bing搜索API返回相关搜索?解决403禁止访问错误

解决Bing搜索API 403 Forbidden错误(获取相关搜索结果)

我来帮你排查这个问题,你遇到的403错误主要是URL参数拼接的问题,咱们一步步解决:

问题根源:URL中的转义字符错误

你在拼接请求URL时使用了&,这是HTML转义字符,而HTTP请求的URL里需要直接用&来分隔参数。服务器会把&当成参数名的一部分,导致请求格式不合法,最终触发403 Forbidden错误。

修复方案

方案1:直接修正参数分隔符

把URL拼接中的&替换成&即可:

$result = file_get_contents($url . "?q=" . urlencode($query) . "&responseFilter=RelatedSearches", false, $context);

方案2:使用http_build_query构建参数(更推荐)

手动拼接URL容易出错,用PHP内置的http_build_query可以自动处理参数分隔符和编码,更规范安全:

function BingWebSearch ($url, $key, $query) {
    $headers = "Ocp-Apim-Subscription-Key: $key\r\n";
    $options = array ('http' => array (
        'header' => $headers,
        'method' => 'GET'));
    $context = stream_context_create($options);
    
    // 用http_build_query构建参数,自动处理编码和分隔符
    $params = [
        'q' => $query,
        'responseFilter' => 'RelatedSearches'
    ];
    $fullUrl = $url . '?' . http_build_query($params);
    
    $result = file_get_contents($fullUrl, false, $context);

    $headers = array();
    foreach ($http_response_header as $k => $v) {
        $h = explode(":", $v, 2);
        if (isset($h[1]))
            if (preg_match("/^BingAPIs-/", $h[0]) || preg_match("/^X-MSEdge-/", $h[0]))
                $headers[trim($h[0])] = trim($h[1]);
    }
    return array($headers, $result);
}

额外检查项

如果修改后还是出现403,请确认:

  • 你的accessKey是有效的32位Bing搜索API密钥,没有过期或权限限制
  • 你的请求IP在API允许的访问范围内(如果设置了IP白名单)

修改后重新运行代码,应该就能正常获取相关搜索结果的响应了。

内容的提问来源于stack exchange,提问作者Wonko the Sane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:35:53