springboot websocket如何获取请求头
时间: 2023-07-26 22:42:26 浏览: 208
在SpringBoot中使用WebSocket时,可以使用`@ServerEndpoint`注解来创建WebSocket服务端点。要获取WebSocket请求头,可以使用`javax.websocket.Session`类提供的`getRequestHeader()`方法。
下面是一个获取WebSocket请求头的示例代码:
```java
@ServerEndpoint("/websocket")
public class MyWebSocket {
@OnOpen
public void onOpen(Session session, EndpointConfig config) {
// 获取请求头
String userAgent = session.getRequestHeader("User-Agent").toString();
System.out.println("User-Agent: " + userAgent);
}
// ...
}
```
在上面的代码中,`@OnOpen`注解表示当WebSocket连接建立时,会调用该方法。在方法中,我们可以通过`Session`对象的`getRequestHeader()`方法获取请求头,然后打印出来。需要注意的是,`getRequestHeader()`方法返回的是一个`List<String>`类型的值,因为一个请求头可能对应多个值。
除了使用`Session`类获取请求头,还可以使用Spring提供的`RequestContextHolder.getRequestAttributes()`方法来获取当前请求的`HttpServletRequest`对象,然后通过该对象获取请求头。不过需要注意的是,这种方式只适用于在Controller中处理WebSocket请求的场景。如果使用`@ServerEndpoint`注解创建WebSocket服务端点,则无法使用该方法获取请求头。
阅读全文