使用cURL调用Bing IndexNow API提交URL报参数无效如何解决
报错原因
这个错误和密钥有效性、接口权限无关,完全是脚本参数格式写错了:
- 所有变量赋值时你额外嵌套了一层双引号,传给curl的请求头、请求地址、请求体前后都带了多余的引号字符,服务端无法解析合法的参数结构
- 手动指定Host请求头属于多余操作,curl会根据请求URL自动生成正确的Host头,手动传值加格式错误反而会干扰请求解析
修复方案
把所有变量里多余的嵌套引号全部删掉,删掉手动传Host头的代码,用PowerShell的多行字符串格式写JSON避免转义问题,修正后的完整脚本如下:
$header_content = 'Content-Type: application/json; charset=utf-8' $url_index = 'https://www.bing.com/IndexNow' # 用@' '@的多行字符串格式写JSON,不会出现转义错误 $data = @' { "host": "xinlake.dev", "key": "72d80bb8d9f645ad9e246e46d336c997", "keyLocation": "https://xinlake.dev/72d80bb8d9f645ad9e246e46d336c997.txt", "urlList": [ "https://xinlake.dev/blog/2022/05-voting-script/", "https://xinlake.dev/blog/2022/05-private-channel/" ] } '@ & curl.exe -v --http1.1 --header $header_content --data $data $url_index
排错检查
如果改完脚本还是报错,逐一核对以下两点:
- 密钥文件必须放在站点根目录,文件内容只能是纯密钥字符串,不能有空行、HTML标签、其他注释内容,直接访问密钥文件地址时只能看到那串32位的密钥值
- urlList里的所有链接必须属于host字段对应的域名,不能提交其他域名的URL,路径要准确可访问
内容的提问来源于stack exchange,提问作者user13951375
相关产品推荐
相关产品推荐

