ZAP OpenAPI扫描报错:/JSON/openapi/view/results/端点请求失败
ZAP OpenAPI扫描报错BAD_VIEW (results)的解决思路
核心问题
ZAP的OpenAPI扩展不存在/JSON/openapi/view/results/这个API端点,不管是扫描过程中自动调用还是手动请求,都会返回BAD_VIEW错误。扫描终止的原因是触发扫描的逻辑错误调用了不存在的端点,而非ZAP自身处理告警时出错。
解决步骤
1. 明确ZAP正确的扫描结果端点
OpenAPI扩展仅负责导入API定义、生成站点结构,扫描执行和结果获取依赖ZAP的核心组件:
- 主动扫描启动:
/JSON/ascan/action/scan/ - 扫描状态查询:
/JSON/ascan/view/status/ - 所有告警结果:
/JSON/alerts/view/alerts/
2. 修正扫描流程
你当前的脚本仅完成了OpenAPI定义导入,正确的完整流程应为:
# 1. 导入OpenAPI定义(原有命令) BASE_ZAP_URL="http://localhost:8080/JSON" OPENAPI_URL="${BASE_ZAP_URL}/openapi/action/importFile/" OPENAPI_FILE_PATH="openapi.json" curl "${OPENAPI_URL}?apikey=${ZAP_API_KEY}&target=${TARGET_URL}&file=${OPENAPI_FILE_PATH}" # 2. 启动主动扫描(替换为你的目标URL) SCAN_ID=$(curl -s "http://localhost:8080/JSON/ascan/action/scan/?apikey=${ZAP_API_KEY}&url=${TARGET_URL}&recurse=true" | jq -r '.scan') # 3. 轮询扫描状态,直到完成 while true; do STATUS=$(curl -s "http://localhost:8080/JSON/ascan/view/status/?apikey=${ZAP_API_KEY}&scanId=${SCAN_ID}" | jq -r '.status') if [ "$STATUS" -eq 100 ]; then break fi sleep 5 done # 4. 获取扫描告警结果 curl "http://localhost:8080/JSON/alerts/view/alerts/?apikey=${ZAP_API_KEY}&baseurl=${TARGET_URL}"
3. 排查扫描触发逻辑
如果是第三方工具或自定义脚本自动调用了/JSON/openapi/view/results/,需要修改该逻辑,替换为上述正确的端点。
4. 版本检查
老旧版本的ZAP或OpenAPI扩展可能存在端点命名差异,建议升级到ZAP最新稳定版,并确保OpenAPI扩展为最新版本。
内容的提问来源于stack exchange,提问作者Alexandre
相关产品推荐
相关产品推荐

