Class WebSocketUrlNormalizer
java.lang.Object
io.github.theword.queqiao.core.websocket.WebSocketUrlNormalizer
WebSocket URL 归一化与日志脱敏
纯逻辑组件:无网络、无线程、无全局状态依赖。
归一化规则(顺序固定):
- trim
- 丢弃空串
- 校验 scheme,仅接受
ws://与wss:// - 去重(保留首次出现的顺序)
为什么必须校验 scheme:合法 URI 不等于合法 WebSocket URL。
http:// / ftp:// 都能通过 new URI(...),
若不在此处拦截,错误会一直拖到 Client 连接阶段才暴露。
- Since:
- 0.6.11
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanhasSupportedScheme(String url) 判断是否使用了受支持的 scheme归一化 URL 列表static StringsanitizeForLog(String url) 脱敏 URL 以便安全写入日志
-
Method Details
-
normalize
归一化 URL 列表- Parameters:
rawUrls- 原始配置列表,允许为 null- Returns:
- 归一化结果,永不为 null
-
hasSupportedScheme
判断是否使用了受支持的 scheme- Parameters:
url- 待判断的 URL- Returns:
- 仅当以
ws://或wss://开头(忽略大小写)时为 true
-
sanitizeForLog
脱敏 URL 以便安全写入日志移除两处可能承载凭据的内容:
- query string —— 例如
?Authorization=Bearer%20xxx - user info —— 例如
ws://user:password@host
- Parameters:
url- 原始 URL,允许为 null- Returns:
- 可安全记录的文本
- query string —— 例如
-