竹简文档

HeaderUtil

HTTP 请求头解析工具类,提供授权用户标识、Referer、User-Agent 等请求头的提取与校验

HeaderUtil

HeaderUtil 是一个静态工具类,封装了 HTTP 请求头的常用提取和校验操作。所有方法均接收 HttpServletRequest 参数,返回对应请求头的解析结果。

方法列表

授权用户标识

字段

类型

Referer

字段

类型

User-Agent

字段

类型

Host 与 Accept

字段

类型

使用示例

获取授权用户

UserController.java
@GetMapping("/profile")
public ResponseEntity<BaseResponse<UserVO>> getProfile(
        HttpServletRequest request) {
    // 从请求头中提取用户 UUID
    UUID userId = HeaderUtil.getAuthorizeUserUuid(request);
    UserVO user = userService.getById(userId);
    return ResultUtil.success("查询成功", user);
}

获取字符串格式的用户标识

LogService.java
public void recordUserAction(HttpServletRequest request, String action) {
    // 使用字符串格式,避免 UUID 解析开销
    String userId = HeaderUtil.getAuthorizeUserUuidString(request);
    log.info("用户 {} 执行操作: {}", userId, action);
}

Referer 校验

SecurityService.java
public void validateReferer(HttpServletRequest request) {
    if (!HeaderUtil.hasReferer(request)) {
        throw new BusinessException("缺少 Referer", ErrorCode.FORBIDDEN);
    }

    String referer = HeaderUtil.getReferer(request);
    if (!isAllowedReferer(referer)) {
        throw new BusinessException("非法来源", ErrorCode.FORBIDDEN);
    }
}

User-Agent 检测

AnalyticsService.java
public void logClientInfo(HttpServletRequest request) {
    if (HeaderUtil.hasUserAgent(request)) {
        String ua = HeaderUtil.getUserAgent(request);
        log.info("客户端: {}", ua);
    }
}

注意事项

  • 所有方法均为静态方法,无需实例化
  • getAuthorizeUserUuid() 在解析失败时可能抛出异常,建议在调用前确认请求头存在
  • has*() 系列方法适合在条件判断中使用,避免空指针异常

下一步

On this page