mirror of
https://github.com/minio/minio.git
synced 2024-12-25 14:45:54 -05:00
fix: obtain correct location string with DNS style buckets (#10060)
closes #10054
This commit is contained in:
parent
1341bf5a9e
commit
7342b5355f
@ -396,8 +396,7 @@ func getObjectLocation(r *http.Request, domains []string, bucket, object string)
|
|||||||
}
|
}
|
||||||
// If domain is set then we need to use bucket DNS style.
|
// If domain is set then we need to use bucket DNS style.
|
||||||
for _, domain := range domains {
|
for _, domain := range domains {
|
||||||
if strings.Contains(r.Host, domain) {
|
if strings.HasPrefix(r.Host, bucket+"."+domain) {
|
||||||
u.Host = bucket + "." + r.Host
|
|
||||||
u.Path = path.Join(SlashSeparator, object)
|
u.Path = path.Join(SlashSeparator, object)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ func TestObjectLocation(t *testing.T) {
|
|||||||
// Server with virtual domain name.
|
// Server with virtual domain name.
|
||||||
{
|
{
|
||||||
request: &http.Request{
|
request: &http.Request{
|
||||||
Host: "mys3.bucket.org",
|
Host: "mybucket.mys3.bucket.org",
|
||||||
Header: map[string][]string{},
|
Header: map[string][]string{},
|
||||||
},
|
},
|
||||||
domains: []string{"mys3.bucket.org"},
|
domains: []string{"mys3.bucket.org"},
|
||||||
@ -87,7 +87,7 @@ func TestObjectLocation(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
request: &http.Request{
|
request: &http.Request{
|
||||||
Host: "mys3.bucket.org",
|
Host: "mybucket.mys3.bucket.org",
|
||||||
Header: map[string][]string{
|
Header: map[string][]string{
|
||||||
"X-Forwarded-Scheme": {httpsScheme},
|
"X-Forwarded-Scheme": {httpsScheme},
|
||||||
},
|
},
|
||||||
@ -98,11 +98,14 @@ func TestObjectLocation(t *testing.T) {
|
|||||||
expectedLocation: "https://mybucket.mys3.bucket.org/test/1.txt",
|
expectedLocation: "https://mybucket.mys3.bucket.org/test/1.txt",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for i, testCase := range testCases {
|
for _, testCase := range testCases {
|
||||||
gotLocation := getObjectLocation(testCase.request, testCase.domains, testCase.bucket, testCase.object)
|
testCase := testCase
|
||||||
if testCase.expectedLocation != gotLocation {
|
t.Run("", func(t *testing.T) {
|
||||||
t.Errorf("Test %d: expected %s, got %s", i+1, testCase.expectedLocation, gotLocation)
|
gotLocation := getObjectLocation(testCase.request, testCase.domains, testCase.bucket, testCase.object)
|
||||||
}
|
if testCase.expectedLocation != gotLocation {
|
||||||
|
t.Errorf("expected %s, got %s", testCase.expectedLocation, gotLocation)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user