SpringBoot获取Header值
时间: 2024-04-29 20:24:59 浏览: 56
可以使用HttpServletRequest对象获取Header值,具体代码如下:
@GetMapping("/test")
public void test(HttpServletRequest request) {
String headerValue = request.getHeader("HeaderName");
// 其它操作
}
当然也可以使用注解的方式获取Header值,具体代码如下:
@GetMapping("/test")
public void test(@RequestHeader("HeaderName") String headerValue) {
// 其它操作
}
相关问题
springboot websocket 获取header
要在Spring Boot中获取WebSocket消息的header,可以使用org.springframework.messaging.Message
对象中的getHeaders()
方法。具体来说,可以在WebSocket处理程序的handleMessage()
方法中注入Message
对象,然后使用getHeaders()
方法获取header,代码示例如下:
@MessageMapping("/my-endpoint")
public void handleMessage(Message<String> message) {
HttpHeaders headers = message.getHeaders();
String headerValue = headers.getFirst("header-name");
// do something with the header value
}
在上面的示例中,假设在客户端发送WebSocket消息时,设置了名为"header-name"的header。可以通过getFirst()
方法获取该header的值。
springboot 从header中获取某个值并存在当前线程中
在Spring Boot应用中,如果你想从HTTP请求头中获取特定的值,并将其存储在当前线程中,可以使用@RequestHeader
注解结合ThreadLocal
变量。ThreadLocal
是一个线程本地变量,每个线程都有它自己的副本。
下面是一个简单的示例,假设我们想获取名为"Authorization"的请求头:
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
@Component
public class HeaderUtils {
private static final ThreadLocal<String> authorizationToken = new ThreadLocal<>();
public void setAuthorizationFromRequest(HttpServletRequest request) {
HttpHeaders headers = request.getHeaders();
String authToken = headers.getFirst("Authorization");
// 如果有值,设置到ThreadLocal
if (authToken != null) {
authorizationToken.set(authToken);
}
}
public String getAuthorization() {
return authorizationToken.get();
}
// 可以选择清空ThreadLocal,当不需要这个值时
public void clearAuthorization() {
authorizationToken.remove();
}
}
要在控制器或其他服务中使用这个方法,只需要注入HeaderUtils
并调用setAuthorizationFromRequest
即可:
@RestController
public class MyController {
private final HeaderUtils headerUtils;
public MyController(HeaderUtils headerUtils) {
this.headerUtils = headerUtils;
}
@GetMapping("/protected")
public ResponseEntity<?> protectedResource() {
String authToken = headerUtils.getAuthorization();
// ...然后在这里处理授权信息
return ResponseEntity.ok("Access granted with token: " + authToken);
}
}
相关推荐
















