Class WebSocketUrlNormalizer

java.lang.Object
io.github.theword.queqiao.core.websocket.WebSocketUrlNormalizer

public final class WebSocketUrlNormalizer extends Object
WebSocket URL 归一化与日志脱敏

纯逻辑组件:无网络、无线程、无全局状态依赖。

归一化规则(顺序固定):

  1. trim
  2. 丢弃空串
  3. 校验 scheme,仅接受 ws:// 与 wss://
  4. 去重(保留首次出现的顺序)

为什么必须校验 scheme:合法 URI 不等于合法 WebSocket URL。 http:// / ftp:// 都能通过 new URI(...), 若不在此处拦截,错误会一直拖到 Client 连接阶段才暴露。

Since:
0.6.11
  • Method Details

    • normalize

      public static WebSocketUrlNormalizer.Result normalize(List<String> rawUrls)
      归一化 URL 列表
      Parameters:
      rawUrls - 原始配置列表,允许为 null
      Returns:
      归一化结果,永不为 null
    • hasSupportedScheme

      public static boolean hasSupportedScheme(String url)
      判断是否使用了受支持的 scheme
      Parameters:
      url - 待判断的 URL
      Returns:
      仅当以 ws:// 或 wss:// 开头(忽略大小写)时为 true
    • sanitizeForLog

      public static String sanitizeForLog(String url)
      脱敏 URL 以便安全写入日志

      移除两处可能承载凭据的内容:

      • query string —— 例如 ?Authorization=Bearer%20xxx
      • user info —— 例如 ws://user:password@host
      Parameters:
      url - 原始 URL,允许为 null
      Returns:
      可安全记录的文本