Class HttpParser

java.lang.Object
org.apache.tomcat.util.http.parser.HttpParser

public class HttpParser extends Object
HTTP header value parser implementation. Parsing HTTP headers as per RFC2616 is not always as simple as it first appears. For headers that only use tokens the simple approach will normally be sufficient. However, for the other headers, while simple code meets 99.9% of cases, there are often some edge cases that make things far more complicated. The purpose of this parser is to let the parser worry about the edge cases. It provides tolerant (where safe to do so) parsing of HTTP header values assuming that wrapped header lines have already been unwrapped. (The Tomcat header processing code does the unwrapping.)
  • Constructor Details Link icon

    • HttpParser Link icon

      public HttpParser(String relaxedPathChars, String relaxedQueryChars)
  • Method Details Link icon

    • isNotRequestTargetRelaxed Link icon

      public boolean isNotRequestTargetRelaxed(int c)
    • isAbsolutePathRelaxed Link icon

      public boolean isAbsolutePathRelaxed(int c)
    • isQueryRelaxed Link icon

      public boolean isQueryRelaxed(int c)
    • unquote Link icon

      public static String unquote(String input)
    • isToken Link icon

      public static boolean isToken(int c)
    • isToken Link icon

      public static boolean isToken(String s)
      Is the provided String a token as per RFC 7230?
      Note: token = 1 * tchar (RFC 7230)
      Since a token requires at least 1 tchar, null and the empty string ("") are not considered to be valid tokens.
      Parameters:
      s - The string to test
      Returns:
      true if the string is a valid token, otherwise false
    • isHex Link icon

      public static boolean isHex(int c)
    • isNotRequestTarget Link icon

      public static boolean isNotRequestTarget(int c)
    • isHttpProtocol Link icon

      public static boolean isHttpProtocol(int c)
    • isAlpha Link icon

      public static boolean isAlpha(int c)
    • isNumeric Link icon

      public static boolean isNumeric(int c)
    • isScheme Link icon

      public static boolean isScheme(int c)
    • isScheme Link icon

      public static boolean isScheme(String s)
      Is the provided String a scheme as per RFC 3986?
      Note: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
      Since a scheme requires at least 1 ALPHA, null and the empty string ("") are not considered to be valid tokens.
      Parameters:
      s - The string to test
      Returns:
      true if the string is a valid scheme, otherwise false
    • isUserInfo Link icon

      public static boolean isUserInfo(int c)
    • isAbsolutePath Link icon

      public static boolean isAbsolutePath(int c)
    • isQuery Link icon

      public static boolean isQuery(int c)
    • isControl Link icon

      public static boolean isControl(int c)