HeaderUtil
HTTP 请求头解析工具类,提供授权用户标识、Referer、User-Agent 等请求头的提取与校验
HeaderUtil
HeaderUtil 是一个静态工具类,封装了 HTTP 请求头的常用提取和校验操作。所有方法均接收 HttpServletRequest 参数,返回对应请求头的解析结果。
方法列表
授权用户标识
字段
类型
Referer
字段
类型
User-Agent
字段
类型
Host 与 Accept
字段
类型
使用示例
获取授权用户
@GetMapping("/profile")
public ResponseEntity<BaseResponse<UserVO>> getProfile(
HttpServletRequest request) {
// 从请求头中提取用户 UUID
UUID userId = HeaderUtil.getAuthorizeUserUuid(request);
UserVO user = userService.getById(userId);
return ResultUtil.success("查询成功", user);
}获取字符串格式的用户标识
public void recordUserAction(HttpServletRequest request, String action) {
// 使用字符串格式,避免 UUID 解析开销
String userId = HeaderUtil.getAuthorizeUserUuidString(request);
log.info("用户 {} 执行操作: {}", userId, action);
}Referer 校验
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 检测
public void logClientInfo(HttpServletRequest request) {
if (HeaderUtil.hasUserAgent(request)) {
String ua = HeaderUtil.getUserAgent(request);
log.info("客户端: {}", ua);
}
}注意事项
- 所有方法均为静态方法,无需实例化
getAuthorizeUserUuid()在解析失败时可能抛出异常,建议在调用前确认请求头存在has*()系列方法适合在条件判断中使用,避免空指针异常