PathResourceResolver should not resolve root path
When resolving resources, the PathResourceResolver creates a Resource instance and checks whether this resource `exists()` and `isReadable()`. While that last call returns false for folders on the file system, both calls return true for folders located inside JARs. If a JAR location is configured as a resource location, then PathResourceResolver can resolve folders in JARs as valid locations and candidates for paths resolution. Prior to this change, the PathResourceResolver would resolve "" as a valid resource path (here, the "/META-INF/resources/webjars" if configured, for example) and return a "" path for this resource, effectively turning all "/" URLs into empty ones "". This commit fixes the resolveUrlPathInternal implementation by not allowing empty paths as valid resource paths. Issue: SPR-13241
This commit is contained in:
@@ -82,7 +82,7 @@ public class PathResourceResolver extends AbstractResourceResolver {
|
||||
protected String resolveUrlPathInternal(String resourcePath, List<? extends Resource> locations,
|
||||
ResourceResolverChain chain) {
|
||||
|
||||
return (getResource(resourcePath, locations) != null ? resourcePath : null);
|
||||
return (StringUtils.hasText(resourcePath) && getResource(resourcePath, locations) != null ? resourcePath : null);
|
||||
}
|
||||
|
||||
private Resource getResource(String resourcePath, List<? extends Resource> locations) {
|
||||
|
||||
Reference in New Issue
Block a user