Class ResourceHandlerUtils

java.lang.Object
org.springframework.web.reactive.resource.ResourceHandlerUtils

public abstract class ResourceHandlerUtils extends Object
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

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    assertResourceLocation(@Nullable org.springframework.core.io.Resource location)
    Assert the given location is not null, and its path ends on slash.
    static org.springframework.core.io.Resource
    createRelativeResource(org.springframework.core.io.Resource location, String resourcePath)
    Create a resource relative to the given Resource, also decoding the resource path for a UrlResource.
    static String
    Check if the given static resource location path ends with a trailing slash, and append it if necessary.
    static boolean
    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).
    static boolean
    isResourceUnderLocation(org.springframework.core.io.Resource location, org.springframework.core.io.Resource resource)
    Check whether the resource is under the given location.
    static String
    Normalize the given resource path replacing the following: Backslash with forward slash.
    static boolean
    Whether the given input path is invalid as determined by isInvalidPath(String).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ResourceHandlerUtils

      public ResourceHandlerUtils()
  • Method Details

    • assertResourceLocation

      public static void assertResourceLocation(@Nullable org.springframework.core.io.Resource location)
      Assert the given location is not null, and its path ends on slash.
    • initLocationPath

      public static String initLocationPath(String path)
      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

      public static String normalizeInputPath(String path)
      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

      public static boolean shouldIgnoreInputPath(String path)
      Whether the given input path is invalid as determined by isInvalidPath(String). The path is also decoded and the same checks are performed again.
    • isInvalidPath

      public 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 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 org.springframework.core.io.Resource createRelativeResource(org.springframework.core.io.Resource location, String resourcePath) throws IOException
      Create a resource relative to the given Resource, also decoding the resource path for a UrlResource.
      Throws:
      IOException
    • isResourceUnderLocation

      public static boolean isResourceUnderLocation(org.springframework.core.io.Resource location, org.springframework.core.io.Resource resource) throws IOException
      Check whether the resource is under the given location.
      Throws:
      IOException