Example usage for org.springframework.http.server ServerHttpRequest getHeaders

List of usage examples for org.springframework.http.server ServerHttpRequest getHeaders

Introduction

In this page you can find the example usage for org.springframework.http.server ServerHttpRequest getHeaders.

Prototype

HttpHeaders getHeaders();

Source Link

Document

Return the headers of this message.

Usage

From source file:org.springframework.web.socket.server.DefaultHandshakeHandler.java

protected void handleWebSocketVersionNotSupported(ServerHttpRequest request, ServerHttpResponse response) {
    logger.debug("WebSocket version not supported " + request.getHeaders().get("Sec-WebSocket-Version"));
    response.setStatusCode(HttpStatus.UPGRADE_REQUIRED);
    response.getHeaders()/*w w  w .j a v a2s .  co m*/
            .setSecWebSocketVersion(StringUtils.arrayToCommaDelimitedString(getSupportedVerions()));
}

From source file:org.springframework.web.socket.server.DefaultHandshakeHandler.java

protected boolean isValidOrigin(ServerHttpRequest request) {
    String origin = request.getHeaders().getOrigin();
    if (origin != null) {
        // UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(origin);
        // TODO//from  ww w.j  ava  2 s.  c om
        // A simple strategy checks against the current request's scheme/port/host
        // Or match scheme, port, and host against configured allowed origins (wild cards for hosts?)
        // return false;
    }
    return true;
}

From source file:org.springframework.web.socket.server.standard.AbstractStandardUpgradeStrategy.java

@Override
public void upgrade(ServerHttpRequest request, ServerHttpResponse response, @Nullable String selectedProtocol,
        List<WebSocketExtension> selectedExtensions, @Nullable Principal user, WebSocketHandler wsHandler,
        Map<String, Object> attrs) throws HandshakeFailureException {

    HttpHeaders headers = request.getHeaders();
    InetSocketAddress localAddr = null;
    try {/*w w w.  j  a va  2s .  c  o  m*/
        localAddr = request.getLocalAddress();
    } catch (Exception ex) {
        // Ignore
    }
    InetSocketAddress remoteAddr = null;
    try {
        remoteAddr = request.getRemoteAddress();
    } catch (Exception ex) {
        // Ignore
    }

    StandardWebSocketSession session = new StandardWebSocketSession(headers, attrs, localAddr, remoteAddr,
            user);
    StandardWebSocketHandlerAdapter endpoint = new StandardWebSocketHandlerAdapter(wsHandler, session);

    List<Extension> extensions = new ArrayList<>();
    for (WebSocketExtension extension : selectedExtensions) {
        extensions.add(new WebSocketToStandardExtensionAdapter(extension));
    }

    upgradeInternal(request, response, selectedProtocol, extensions, endpoint);
}

From source file:org.springframework.web.socket.server.support.AbstractHandshakeHandler.java

@Override
public final boolean doHandshake(ServerHttpRequest request, ServerHttpResponse response,
        WebSocketHandler wsHandler, Map<String, Object> attributes) throws HandshakeFailureException {

    WebSocketHttpHeaders headers = new WebSocketHttpHeaders(request.getHeaders());
    if (logger.isTraceEnabled()) {
        logger.trace("Processing request " + request.getURI() + " with headers=" + headers);
    }/*from w w  w .  j  a v  a2s .c om*/
    try {
        if (HttpMethod.GET != request.getMethod()) {
            response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);
            response.getHeaders().setAllow(Collections.singleton(HttpMethod.GET));
            if (logger.isErrorEnabled()) {
                logger.error("Handshake failed due to unexpected HTTP method: " + request.getMethod());
            }
            return false;
        }
        if (!"WebSocket".equalsIgnoreCase(headers.getUpgrade())) {
            handleInvalidUpgradeHeader(request, response);
            return false;
        }
        if (!headers.getConnection().contains("Upgrade") && !headers.getConnection().contains("upgrade")) {
            handleInvalidConnectHeader(request, response);
            return false;
        }
        if (!isWebSocketVersionSupported(headers)) {
            handleWebSocketVersionNotSupported(request, response);
            return false;
        }
        if (!isValidOrigin(request)) {
            response.setStatusCode(HttpStatus.FORBIDDEN);
            return false;
        }
        String wsKey = headers.getSecWebSocketKey();
        if (wsKey == null) {
            if (logger.isErrorEnabled()) {
                logger.error("Missing \"Sec-WebSocket-Key\" header");
            }
            response.setStatusCode(HttpStatus.BAD_REQUEST);
            return false;
        }
    } catch (IOException ex) {
        throw new HandshakeFailureException(
                "Response update failed during upgrade to WebSocket: " + request.getURI(), ex);
    }

    String subProtocol = selectProtocol(headers.getSecWebSocketProtocol(), wsHandler);
    List<WebSocketExtension> requested = headers.getSecWebSocketExtensions();
    List<WebSocketExtension> supported = this.requestUpgradeStrategy.getSupportedExtensions(request);
    List<WebSocketExtension> extensions = filterRequestedExtensions(request, requested, supported);
    Principal user = determineUser(request, wsHandler, attributes);

    if (logger.isTraceEnabled()) {
        logger.trace("Upgrading to WebSocket, subProtocol=" + subProtocol + ", extensions=" + extensions);
    }
    this.requestUpgradeStrategy.upgrade(request, response, subProtocol, extensions, user, wsHandler,
            attributes);
    return true;
}

From source file:org.springframework.web.socket.server.support.AbstractHandshakeHandler.java

protected void handleInvalidUpgradeHeader(ServerHttpRequest request, ServerHttpResponse response)
        throws IOException {
    if (logger.isErrorEnabled()) {
        logger.error("Handshake failed due to invalid Upgrade header: " + request.getHeaders().getUpgrade());
    }//from  w w  w  . j av a  2 s.  c  o m
    response.setStatusCode(HttpStatus.BAD_REQUEST);
    response.getBody().write("Can \"Upgrade\" only to \"WebSocket\".".getBytes(StandardCharsets.UTF_8));
}

From source file:org.springframework.web.socket.server.support.AbstractHandshakeHandler.java

protected void handleInvalidConnectHeader(ServerHttpRequest request, ServerHttpResponse response)
        throws IOException {
    if (logger.isErrorEnabled()) {
        logger.error(/*  w ww .j  ava  2 s. c  om*/
                "Handshake failed due to invalid Connection header " + request.getHeaders().getConnection());
    }
    response.setStatusCode(HttpStatus.BAD_REQUEST);
    response.getBody().write("\"Connection\" must be \"upgrade\".".getBytes(StandardCharsets.UTF_8));
}

From source file:org.springframework.web.socket.server.support.AbstractHandshakeHandler.java

protected void handleWebSocketVersionNotSupported(ServerHttpRequest request, ServerHttpResponse response) {
    if (logger.isErrorEnabled()) {
        String version = request.getHeaders().getFirst("Sec-WebSocket-Version");
        logger.error("Handshake failed due to unsupported WebSocket version: " + version
                + ". Supported versions: " + Arrays.toString(getSupportedVersions()));
    }/*from   w ww .  j av  a  2  s .com*/
    response.setStatusCode(HttpStatus.UPGRADE_REQUIRED);
    response.getHeaders().set(WebSocketHttpHeaders.SEC_WEBSOCKET_VERSION,
            StringUtils.arrayToCommaDelimitedString(getSupportedVersions()));
}

From source file:org.springframework.web.socket.server.support.DefaultHandshakeHandler.java

@Override
public final boolean doHandshake(ServerHttpRequest request, ServerHttpResponse response,
        WebSocketHandler wsHandler, Map<String, Object> attributes) throws HandshakeFailureException {

    WebSocketHttpHeaders headers = new WebSocketHttpHeaders(request.getHeaders());
    if (logger.isTraceEnabled()) {
        logger.trace("Processing request " + request.getURI() + " with headers=" + headers);
    }//from  ww  w . ja v  a2  s . c om
    try {
        if (!HttpMethod.GET.equals(request.getMethod())) {
            response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);
            response.getHeaders().setAllow(Collections.singleton(HttpMethod.GET));
            if (logger.isErrorEnabled()) {
                logger.error("Handshake failed due to unexpected HTTP method: " + request.getMethod());
            }
            return false;
        }
        if (!"WebSocket".equalsIgnoreCase(headers.getUpgrade())) {
            handleInvalidUpgradeHeader(request, response);
            return false;
        }
        if (!headers.getConnection().contains("Upgrade") && !headers.getConnection().contains("upgrade")) {
            handleInvalidConnectHeader(request, response);
            return false;
        }
        if (!isWebSocketVersionSupported(headers)) {
            handleWebSocketVersionNotSupported(request, response);
            return false;
        }
        if (!isValidOrigin(request)) {
            response.setStatusCode(HttpStatus.FORBIDDEN);
            return false;
        }
        String wsKey = headers.getSecWebSocketKey();
        if (wsKey == null) {
            if (logger.isErrorEnabled()) {
                logger.error("Missing \"Sec-WebSocket-Key\" header");
            }
            response.setStatusCode(HttpStatus.BAD_REQUEST);
            return false;
        }
    } catch (IOException ex) {
        throw new HandshakeFailureException(
                "Response update failed during upgrade to WebSocket, uri=" + request.getURI(), ex);
    }

    String subProtocol = selectProtocol(headers.getSecWebSocketProtocol(), wsHandler);
    List<WebSocketExtension> requested = headers.getSecWebSocketExtensions();
    List<WebSocketExtension> supported = this.requestUpgradeStrategy.getSupportedExtensions(request);
    List<WebSocketExtension> extensions = filterRequestedExtensions(request, requested, supported);
    Principal user = determineUser(request, wsHandler, attributes);

    if (logger.isTraceEnabled()) {
        logger.trace("Upgrading to WebSocket, subProtocol=" + subProtocol + ", extensions=" + extensions);
    }
    this.requestUpgradeStrategy.upgrade(request, response, subProtocol, extensions, user, wsHandler,
            attributes);
    return true;
}

From source file:org.springframework.web.socket.server.support.DefaultHandshakeHandler.java

protected void handleInvalidUpgradeHeader(ServerHttpRequest request, ServerHttpResponse response)
        throws IOException {
    if (logger.isErrorEnabled()) {
        logger.error("Handshake failed due to invalid Upgrade header: " + request.getHeaders().getUpgrade());
    }/*  w ww .  j a  va 2s.co m*/
    response.setStatusCode(HttpStatus.BAD_REQUEST);
    response.getBody().write("Can \"Upgrade\" only to \"WebSocket\".".getBytes(UTF8_CHARSET));
}

From source file:org.springframework.web.socket.server.support.DefaultHandshakeHandler.java

protected void handleInvalidConnectHeader(ServerHttpRequest request, ServerHttpResponse response)
        throws IOException {
    if (logger.isErrorEnabled()) {
        logger.error(/*  ww w .j a v a  2  s. c o  m*/
                "Handshake failed due to invalid Connection header " + request.getHeaders().getConnection());
    }
    response.setStatusCode(HttpStatus.BAD_REQUEST);
    response.getBody().write("\"Connection\" must be \"upgrade\".".getBytes(UTF8_CHARSET));
}