新增: http_request AI工具(结构化HTTP·SSRF防御·High审批)
- 后端: Cargo.toml reqwest0.12(json/gzip/brotli native-tls对齐df-ai) + http.rs(handler+SSRF三层防御 validate_url/resolve_and_check/重定向≤3跳每跳校验) + tool_registry register_http_tools + 基线28→29 - 前端: useToolCard formatHttpResult + ToolCard渲染(method/url/status/body折叠/截断) + HIGH_RISK_TOOLS + confirmHighHttp + i18n - SSRF: localhost/私有IP(127/10/172.16/192.168/169.254云元数据/100.64CGNAT/≥224/IPv6保留)拒绝 + DNS resolve校验防重绑定 + 重定向每跳重校验 - 审批: High(统一保守 GET也审批 防漏写操作) - 截断: 响应50KB(T-05)+ 请求1MB + 超时1-60s默认30
This commit is contained in:
@@ -83,6 +83,11 @@ export default {
|
||||
renamedCrossVolume: '已移动 {from} → {to}(跨卷,{bytes})',
|
||||
writeOverwrite: '覆盖 {old} → {neww}',
|
||||
encodingLabel: '编码:{enc}',
|
||||
// http_request 结果摘要(method + 状态码 + 耗时;body 在展开态显示)
|
||||
httpOk: '{method} {status} 成功({ms} 毫秒)',
|
||||
httpFailed: '{method} {status} 失败',
|
||||
httpTruncated: '响应已截断({bytes}),详见下方',
|
||||
httpRequestFallback: 'HTTP 请求',
|
||||
foundN: '找到 {n} 项',
|
||||
boundDir: '已绑定目录「{path}」技术栈:{stack}',
|
||||
deleteFilePermanent: '已硬删除 {path}',
|
||||
@@ -107,6 +112,8 @@ export default {
|
||||
confirmHighDelete: '确定永久删除?此操作不可恢复',
|
||||
confirmHighExec: '确定执行此命令?',
|
||||
confirmHighGeneric: '确定执行此高危操作?',
|
||||
// http_request 高危二次确认:外发网络请求,数据可经 URL/body 泄露
|
||||
confirmHighHttp: '确定向外部服务器发起此 HTTP 请求?',
|
||||
|
||||
// 工具结果详情格式(非 JSON 纯文本 + 审批占位时补参数摘要)
|
||||
resultDetail: '{raw}({detail})',
|
||||
@@ -127,6 +134,7 @@ export default {
|
||||
purgeProject: '彻底删除项目',
|
||||
updateProject: '更新项目',
|
||||
runWorkflow: '运行工作流',
|
||||
httpRequest: 'HTTP 请求',
|
||||
},
|
||||
|
||||
// UX-260617-14:审批 loading 超时兜底提示(后端无回执,卡片仍 pending_approval 时复位 + 提示用户)
|
||||
@@ -148,6 +156,12 @@ export default {
|
||||
priority: '优先级',
|
||||
tags: '标签',
|
||||
source: '来源',
|
||||
method: '方法',
|
||||
url: 'URL',
|
||||
body: '请求体',
|
||||
headers: '请求头',
|
||||
timeout_secs: '超时(秒)',
|
||||
parse: '解析',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user