aboutsummaryrefslogtreecommitdiff
path: root/weed/server/common.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/server/common.go')
-rw-r--r--weed/server/common.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/weed/server/common.go b/weed/server/common.go
index cf65bd29d..49dd78ce0 100644
--- a/weed/server/common.go
+++ b/weed/server/common.go
@@ -19,12 +19,12 @@ import (
"time"
"github.com/google/uuid"
+ "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
"github.com/seaweedfs/seaweedfs/weed/util/request_id"
"github.com/seaweedfs/seaweedfs/weed/util/version"
"google.golang.org/grpc/metadata"
"github.com/seaweedfs/seaweedfs/weed/filer"
- "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
"google.golang.org/grpc"
@@ -271,9 +271,12 @@ func handleStaticResources2(r *mux.Router) {
}
func AdjustPassthroughHeaders(w http.ResponseWriter, r *http.Request, filename string) {
- for header, values := range r.Header {
- if normalizedHeader, ok := s3_constants.PassThroughHeaders[strings.ToLower(header)]; ok {
- w.Header()[normalizedHeader] = values
+ // Apply S3 passthrough headers from query parameters
+ // AWS S3 supports overriding response headers via query parameters like:
+ // ?response-cache-control=no-cache&response-content-type=application/json
+ for queryParam, headerValue := range r.URL.Query() {
+ if normalizedHeader, ok := s3_constants.PassThroughHeaders[strings.ToLower(queryParam)]; ok && len(headerValue) > 0 {
+ w.Header().Set(normalizedHeader, headerValue[0])
}
}
adjustHeaderContentDisposition(w, r, filename)