diff --git a/cmd/api-headers.go b/cmd/api-headers.go index 64db15ae1..8c5025899 100644 --- a/cmd/api-headers.go +++ b/cmd/api-headers.go @@ -179,22 +179,25 @@ func setObjectHeaders(w http.ResponseWriter, objInfo ObjectInfo, rs *HTTPRangeSp if objInfo.VersionID != "" { w.Header()[xhttp.AmzVersionID] = []string{objInfo.VersionID} } + if objInfo.ReplicationStatus.String() != "" { w.Header()[xhttp.AmzBucketReplicationStatus] = []string{objInfo.ReplicationStatus.String()} } + if lc, err := globalLifecycleSys.Get(objInfo.Bucket); err == nil { - ruleID, expiryTime := lc.PredictExpiryTime(lifecycle.ObjectOpts{ - Name: objInfo.Name, - UserTags: objInfo.UserTags, - VersionID: objInfo.VersionID, - ModTime: objInfo.ModTime, - IsLatest: objInfo.IsLatest, - DeleteMarker: objInfo.DeleteMarker, - SuccessorModTime: objInfo.SuccessorModTime, - }) - if !expiryTime.IsZero() { - w.Header()[xhttp.AmzExpiration] = []string{ - fmt.Sprintf(`expiry-date="%s", rule-id="%s"`, expiryTime.Format(http.TimeFormat), ruleID), + if opts.VersionID == "" { + if ruleID, expiryTime := lc.PredictExpiryTime(lifecycle.ObjectOpts{ + Name: objInfo.Name, + UserTags: objInfo.UserTags, + VersionID: objInfo.VersionID, + ModTime: objInfo.ModTime, + IsLatest: objInfo.IsLatest, + DeleteMarker: objInfo.DeleteMarker, + SuccessorModTime: objInfo.SuccessorModTime, + }); !expiryTime.IsZero() { + w.Header()[xhttp.AmzExpiration] = []string{ + fmt.Sprintf(`expiry-date="%s", rule-id="%s"`, expiryTime.Format(http.TimeFormat), ruleID), + } } } if objInfo.TransitionStatus == lifecycle.TransitionComplete {