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

Go语言构造HTTP GET请求返回404,与http.Get调用结果不一致问题排查

问题原因及解决方案

核心问题1:参数格式填写错误

你第二段代码里的modEndDate参数值少了秒位字段,接口要求的时间格式为年-月-日T时:分:秒:毫秒 时区,对比你正常请求的参数:

  • 正确值:2021-10-30T00:00:00:000 UTC-00:00
  • 错误值:2021-10-30T00:00:000 UTC-00:00
    错误值少了00的秒位,接口无法识别该时间参数,直接返回404。

核心问题2:空格编码格式不兼容

Go标准库的url.Values.Encode()方法默认会将参数中的空格编码为+,但NVD接口仅接受%20格式的空格编码,编码格式不匹配也会导致接口参数解析失败。

修复后的代码示例

import "strings"

req, err := http.NewRequest("GET", "https://services.nvd.nist.gov/rest/json/cves/1.0/", nil)
if err != nil {
    fmt.Printf("Error: %v\n", err)
    os.Exit(1)
}
q := req.URL.Query()
// 补全modEndDate的秒位字段
q.Set("modStartDate", "2021-10-29T12:00:00:000 UTC-00:00")
q.Set("modEndDate", "2021-10-30T00:00:00:000 UTC-00:00")
q.Set("resultsPerPage", "5000")
// 将编码后的+替换为%20适配接口要求
req.URL.RawQuery = strings.ReplaceAll(q.Encode(), "+", "%20")
client := http.Client{}
resp, err := client.Do(req)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:27:01