diff --git a/internal/service/message_segment_image.go b/internal/service/message_segment_image.go index 66e1f09..0923edf 100644 --- a/internal/service/message_segment_image.go +++ b/internal/service/message_segment_image.go @@ -46,14 +46,15 @@ func (s *UploadService) ValidateChatMessageImageSegments(segments model.MessageS if u.Host == "" { return fmt.Errorf("图片地址无效") } - if err := netutil.ValidateURL(urlStr); err != nil { - return fmt.Errorf("图片地址不安全: %w", err) - } - if err := netutil.CheckResolvedHost(u.Hostname()); err != nil { - return fmt.Errorf("图片地址不安全: %w", err) - } - - if !strings.HasPrefix(urlStr, prefix) { + if strings.HasPrefix(urlStr, prefix) { + // 本站 S3 资源,跳过 SSRF 检查(内网 S3 可能解析为私有 IP) + } else { + if err := netutil.ValidateURL(urlStr); err != nil { + return fmt.Errorf("图片地址不安全: %w", err) + } + if err := netutil.CheckResolvedHost(u.Hostname()); err != nil { + return fmt.Errorf("图片地址不安全: %w", err) + } return fmt.Errorf("图片必须使用本站上传接口生成的资源地址") }