【问题标题】:Access Http headers in Spring WebSocket Service在 Spring WebSocket 服务中访问 Http 标头
【发布时间】:2019-10-26 20:55:10
【问题描述】:

我正在尝试在 spring websocket 服务中访问 HTTP 标头(来自原始 https 升级请求)。

据我了解,我应该可以使用 HandshakeInterceptor 来做到这一点。我有一个拦截器,例如:

public class WebsocketHandshakeInterceptor implements HandshakeInterceptor {

  public WebsocketHandshakeInterceptor() {
  }

  @Override
  public boolean beforeHandshake(
      final ServerHttpRequest request,
      final ServerHttpResponse response,
      final WebSocketHandler wsHandler,
      final Map<String, Object> attributes) throws Exception {
    if (request instanceof ServletServerHttpRequest) {
      ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
    }
    return true;
  }

  @Override
  public void afterHandshake(
      final ServerHttpRequest request,
      final ServerHttpResponse response,
      final WebSocketHandler wsHandler,
      final Exception exception) {
  }
}

但是requestservletRequest 对象都有空头。请注意,与大多数示例一样,我不是在使用会话 cookie,而是在使用其他标头。

我有一个测试客户端发出这样的请求:

  WebSocketClient client = new StandardWebSocketClient();
  WebSocketStompClient stompClient = new WebSocketStompClient(client);

  StompSessionHandler sessionHandler = new TestClientStompSessionHandler(getObjectMapper());

  final WebSocketHttpHeaders headers = new WebSocketHttpHeaders();
  if (StringUtils.isNotBlank(token)) {
    LOGGER.error("Adding header           Authorization: Bearer " + token);
    headers.add("Authorization", "Bearer " + token);
  }

  headers.add("X-Foo", "bar");

  stompClient.connect(url, headers, sessionHandler);

很确定它正在添加标头,因为如果我通过需要不记名令牌的 API 网关运行,那么它可以工作(使用有效令牌)

【问题讨论】:

    标签: websocket spring-websocket


    【解决方案1】:

    对不起,我的错。标头已填充,只是 Eclipse 中的调试器没有显示它们。或者我是瞎子。或两者兼而有之。

    HttpHeaders headers = request.getHeaders();
    

    给我我需要的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2017-01-24
      • 2017-08-08
      相关资源
      最近更新 更多