Using s3 range request with localstack causes incorrect content type to be returned & some metadata to be missing:
To reproduce, put object:
`aws s3api put-object --endpoint http://localhost:3006 --bucket some-bucket --key some-dir/some-key --body text.txt --content-type text/plain --content-language en-US --cache-control no-cache`

And compare regular request vs range one:
`aws s3api get-object --endpoint http://localhost:3006 --bucket some-bucket --key some-dir/some-key output.txt --range bytes=0-3`
`aws s3api get-object --endpoint http://localhost:3006 --bucket some-bucket --key some-dir/some-key output.txt`

This works correctly (returns the same metadata regardless of using `--range bytes=0-3`) on aws s3.

Also:
Getting object with/without `range bytes=0-3` should return header "AcceptRanges: bytes" but it doesn't.
host = headers['host']
    return host.startswith(HOSTNAME) or host.startswith(HOSTNAME_EXTERNAL)
def get_bucket_name(path, headers):
    parsed = urlparse.urlparse(path)
    
    bucket_name = parsed.path.split('/')[1]
    
    if uses_path_addressing(headers):
        return normalize_bucket_name(bucket_name)
    
    
    
    common_pattern = re.compile(r'^(.+)\.s3[.\-][a-z]{2}-[a-z]+-[0-9]{1,}'
                                r'\.amazonaws\.com(\.[a-z]+)?$')
    
    
    
    dualstack_pattern = re.compile(r'^(.+)\.s3\.dualstack\.[a-z]{2}-[a-z]+-[0-9]{1,}'
                                   r'\.amazonaws\.com(\.[a-z]+)?$')
    
    
    
    legacy_patterns = re.compile(r'^(.+)\.s3\.?(-external-1)?\.amazonaws\.com(\.[a-z]+)?$')