mirror of
https://github.com/etesync/android
synced 2025-05-18 23:08:49 +00:00
Asset downloader: send credentials when URI authority is the same, even if the default port is explicitly given
This commit is contained in:
parent
243483a957
commit
41bae221f0
@ -206,17 +206,22 @@ public abstract class RemoteCollection<T extends Resource> {
|
|||||||
if (!uri.isAbsolute())
|
if (!uri.isAbsolute())
|
||||||
throw new URISyntaxException(uri.toString(), "URI referenced from entity must be absolute");
|
throw new URISyntaxException(uri.toString(), "URI referenced from entity must be absolute");
|
||||||
|
|
||||||
if (uri.getScheme().equalsIgnoreCase(baseURI.getScheme()) &&
|
// send credentials when asset has same URI authority as baseURI
|
||||||
uri.getAuthority().equalsIgnoreCase(baseURI.getAuthority())) {
|
// we have to construct these helper URIs because
|
||||||
// resource is on same server, send Authorization
|
// "https://server:443" is NOT equal to "https://server" otherwise
|
||||||
|
URI baseUriAuthority = new URI(baseURI.getScheme(), null, baseURI.getHost(), baseURI.getPort(), null, null, null),
|
||||||
|
assetUriAuthority = new URI(uri.getScheme(), null, uri.getHost(), baseURI.getPort(), null, null, null);
|
||||||
|
|
||||||
|
if (baseUriAuthority.equals(assetUriAuthority)) {
|
||||||
|
Log.d(TAG, "Asset is on same server, sending credentials");
|
||||||
WebDavResource file = new WebDavResource(collection, uri);
|
WebDavResource file = new WebDavResource(collection, uri);
|
||||||
file.get("image/*");
|
file.get("image/*");
|
||||||
return file.getContent();
|
return file.getContent();
|
||||||
} else {
|
|
||||||
// resource is on an external server, don't send Authorization
|
} else
|
||||||
|
// resource is on an external server, don't send credentials
|
||||||
return IOUtils.toByteArray(uri);
|
return IOUtils.toByteArray(uri);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user