Support custom host

This commit is contained in:
DullJZ
2025-10-04 15:19:54 +08:00
parent 34a905defd
commit 4b44dc1a1b
6 changed files with 46 additions and 19 deletions
+11 -3
View File
@@ -10,9 +10,10 @@ import (
// S3SignatureConfig controls S3 signature validation.
type S3SignatureConfig struct {
Required func() bool
Credentials func() (string, string)
OnError func(http.ResponseWriter, string, string, string)
Required func() bool
Credentials func() (string, string)
OnError func(http.ResponseWriter, string, string, string)
SignatureHost func() string // 用于签名验证的Host(为空则使用请求的Host)
}
// credentialsProvider implements s3validate.CredentialsProvider interface.
@@ -47,6 +48,13 @@ func S3Signature(cfg S3SignatureConfig) func(http.Handler) http.Handler {
return
}
// 如果配置了签名验证的Host,覆盖请求的Host
if cfg.SignatureHost != nil {
if signatureHost := cfg.SignatureHost(); signatureHost != "" {
r.Host = signatureHost
}
}
result, err := verifier.Verify(r.Context(), r)
if err != nil {
invokeOnError(w, cfg, "SignatureDoesNotMatch", err.Error())