Class ResourceHandlerUtils
java.lang.Object
org.springframework.web.reactive.resource.ResourceHandlerUtils
Resource handling utility methods to share common logic between
ResourceWebHandler
and org.springframework.web.reactive.function.server
.- Since:
- 6.2
- Author:
- Rossen Stoyanchev
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
assertResourceLocation
(Resource location) Assert the given location is not null, and its path ends on slash.static Resource
createRelativeResource
(Resource location, String resourcePath) Create a resource relative to the givenResource
, also decoding the resource path for aUrlResource
.static String
initLocationPath
(String path) Check if the given static resource location path ends with a trailing slash, and append it if necessary.static boolean
isInvalidPath
(String path) Checks for invalid resource input paths rejecting the following: Paths that contain "WEB-INF" or "META-INF" Paths that contain "../" after a call toStringUtils.cleanPath(java.lang.String)
.static boolean
isResourceUnderLocation
(Resource location, Resource resource) Check whether the resource is under the given location.static String
normalizeInputPath
(String path) Normalize the given resource path replacing the following: Backslash with forward slash.static boolean
shouldIgnoreInputPath
(String path) Whether the given input path is invalid as determined byisInvalidPath(String)
.
-
Constructor Details
-
ResourceHandlerUtils
public ResourceHandlerUtils()
-
-
Method Details
-
assertResourceLocation
Assert the given location is not null, and its path ends on slash. -
initLocationPath
Check if the given static resource location path ends with a trailing slash, and append it if necessary.- Parameters:
path
- the location path- Returns:
- the resulting path to use
-
normalizeInputPath
Normalize the given resource path replacing the following:- Backslash with forward slash.
- Duplicate occurrences of slash with a single slash.
- Any combination of leading slash and control characters (00-1F and 7F)
with a single "/" or "". For example
" / // foo/bar"
becomes"/foo/bar"
.
-
shouldIgnoreInputPath
Whether the given input path is invalid as determined byisInvalidPath(String)
. The path is also decoded and the same checks are performed again. -
isInvalidPath
Checks for invalid resource input paths rejecting the following:- Paths that contain "WEB-INF" or "META-INF"
- Paths that contain "../" after a call to
StringUtils.cleanPath(java.lang.String)
. - Paths that represent a
valid URL
or would represent one after the leading slash is removed.
Note: this method assumes that leading, duplicate '/' or control characters (e.g. white space) have been trimmed so that the path starts predictably with a single '/' or does not have one.
- Parameters:
path
- the path to validate- Returns:
true
if the path is invalid,false
otherwise
-
createRelativeResource
public static Resource createRelativeResource(Resource location, String resourcePath) throws IOException Create a resource relative to the givenResource
, also decoding the resource path for aUrlResource
.- Throws:
IOException
-
isResourceUnderLocation
public static boolean isResourceUnderLocation(Resource location, Resource resource) throws IOException Check whether the resource is under the given location.- Throws:
IOException
-