Browse Source

headers

pull/7481/head
chrislu 1 month ago
parent
commit
c8853b327b
  1. 8
      weed/s3api/s3api_object_handlers_put.go
  2. 6
      weed/server/filer_server_handlers_write_autochunk.go

8
weed/s3api/s3api_object_handlers_put.go

@ -443,7 +443,13 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader
// Copy user metadata and standard headers
for k, v := range r.Header {
if len(v) > 0 && len(v[0]) > 0 {
if strings.HasPrefix(k, "X-Amz-Meta-") || k == "Cache-Control" || k == "Expires" || k == "Content-Disposition" {
if strings.HasPrefix(k, "X-Amz-Meta-") {
// AWS S3 stores user metadata keys in lowercase
// Go's HTTP server canonicalizes headers (e.g., x-amz-meta-foo → X-Amz-Meta-Foo)
// but S3 expects lowercase, so convert back to lowercase for storage
lowerKey := strings.ToLower(k)
entry.Extended[lowerKey] = []byte(v[0])
} else if k == "Cache-Control" || k == "Expires" || k == "Content-Disposition" {
entry.Extended[k] = []byte(v[0])
}
if k == "Response-Content-Disposition" {

6
weed/server/filer_server_handlers_write_autochunk.go

@ -544,8 +544,12 @@ func SaveAmzMetaData(r *http.Request, existing map[string][]byte, isReplace bool
for header, values := range r.Header {
if strings.HasPrefix(header, s3_constants.AmzUserMetaPrefix) {
// AWS S3 stores user metadata keys in lowercase
// Go's HTTP server canonicalizes headers (e.g., x-amz-meta-foo → X-Amz-Meta-Foo)
// but S3 expects lowercase, so convert back to lowercase for storage
lowerHeader := strings.ToLower(header)
for _, value := range values {
metadata[header] = []byte(value)
metadata[lowerHeader] = []byte(value)
}
}
}

Loading…
Cancel
Save