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:com.hxh.websocket.HandshakeInterceptor.java

@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
        WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
    System.out.println("Before Handshake");
    System.out.println(request.getHeaders().toString());
    System.out.println("?:" + request.getURI());
    System.out.println(":" + request.getBody());
    return super.beforeHandshake(request, response, wsHandler, attributes);
}

From source file:com.github.jonpeterson.spring.mvc.versioning.VersionedModelResponseBodyAdvice.java

@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
        Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
    VersionedResponseBody versionedResponseBody = returnType.getMethodAnnotation(VersionedResponseBody.class);
    String targetVersion = null;/*from w  w w.j a v  a 2  s  . c  o m*/

    String queryParamName = versionedResponseBody.queryParamName();
    if (!queryParamName.isEmpty()) {
        List<String> queryParamValues = UriComponentsBuilder.fromUri(request.getURI()).build().getQueryParams()
                .get(queryParamName);
        if (queryParamValues != null && !queryParamValues.isEmpty())
            targetVersion = queryParamValues.get(0);
    }

    if (targetVersion == null) {
        String headerName = versionedResponseBody.headerName();
        if (!headerName.isEmpty()) {
            List<String> headerValues = request.getHeaders().get(headerName);
            if (headerValues != null && !headerValues.isEmpty())
                targetVersion = headerValues.get(0);
        }
    }

    if (targetVersion == null)
        targetVersion = versionedResponseBody.defaultVersion();

    try {
        boolean serializeToSet = false;

        for (BeanPropertyDefinition beanPropertyDefinition : mapper.getSerializationConfig()
                .introspect(mapper.getTypeFactory().constructType(body.getClass())).findProperties()) {
            AnnotatedMember field = beanPropertyDefinition.getField();
            AnnotatedMember setter = beanPropertyDefinition.getSetter();
            if ((field != null && field.hasAnnotation(JsonSerializeToVersion.class))
                    || (setter != null && setter.hasAnnotation(JsonSerializeToVersion.class))) {
                if (setter != null)
                    setter.setValue(body, targetVersion);
                else
                    field.setValue(body, targetVersion);
                serializeToSet = true;
            }
        }

        if (!serializeToSet)
            throw new RuntimeException("no @" + JsonSerializeToVersion.class.getSimpleName()
                    + " annotation found on String field or setter method in " + body.getClass()
                    + "; this is a requirement when using @" + VersionedResponseBody.class.getSimpleName());

    } catch (Exception e) {
        throw new RuntimeException("unable to set the version of the response body model", e);
    }

    return body;
}

From source file:org.springframework.boot.devtools.restart.server.HttpRestartServer.java

/**
 * Handle a server request.// w w  w .  j  a v  a2 s. c  o  m
 * @param request the request
 * @param response the response
 * @throws IOException in case of I/O errors
 */
public void handle(ServerHttpRequest request, ServerHttpResponse response) throws IOException {
    try {
        Assert.state(request.getHeaders().getContentLength() > 0, "No content");
        ObjectInputStream objectInputStream = new ObjectInputStream(request.getBody());
        ClassLoaderFiles files = (ClassLoaderFiles) objectInputStream.readObject();
        objectInputStream.close();
        this.server.updateAndRestart(files);
        response.setStatusCode(HttpStatus.OK);
    } catch (Exception ex) {
        logger.warn("Unable to handler restart server HTTP request", ex);
        response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

From source file:org.springframework.web.cors.DefaultCorsProcessor.java

/**
 * Handle the given request./*from  ww w . ja v  a  2 s  .c o  m*/
 */
protected boolean handleInternal(ServerHttpRequest request, ServerHttpResponse response,
        CorsConfiguration config, boolean preFlightRequest) throws IOException {

    String requestOrigin = request.getHeaders().getOrigin();
    String allowOrigin = checkOrigin(config, requestOrigin);
    HttpHeaders responseHeaders = response.getHeaders();

    responseHeaders.addAll(HttpHeaders.VARY, Arrays.asList(HttpHeaders.ORIGIN,
            HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS));

    if (allowOrigin == null) {
        logger.debug("Rejecting CORS request because '" + requestOrigin + "' origin is not allowed");
        rejectRequest(response);
        return false;
    }

    HttpMethod requestMethod = getMethodToUse(request, preFlightRequest);
    List<HttpMethod> allowMethods = checkMethods(config, requestMethod);
    if (allowMethods == null) {
        logger.debug("Rejecting CORS request because '" + requestMethod + "' request method is not allowed");
        rejectRequest(response);
        return false;
    }

    List<String> requestHeaders = getHeadersToUse(request, preFlightRequest);
    List<String> allowHeaders = checkHeaders(config, requestHeaders);
    if (preFlightRequest && allowHeaders == null) {
        logger.debug("Rejecting CORS request because '" + requestHeaders + "' request headers are not allowed");
        rejectRequest(response);
        return false;
    }

    responseHeaders.setAccessControlAllowOrigin(allowOrigin);

    if (preFlightRequest) {
        responseHeaders.setAccessControlAllowMethods(allowMethods);
    }

    if (preFlightRequest && !allowHeaders.isEmpty()) {
        responseHeaders.setAccessControlAllowHeaders(allowHeaders);
    }

    if (!CollectionUtils.isEmpty(config.getExposedHeaders())) {
        responseHeaders.setAccessControlExposeHeaders(config.getExposedHeaders());
    }

    if (Boolean.TRUE.equals(config.getAllowCredentials())) {
        responseHeaders.setAccessControlAllowCredentials(true);
    }

    if (preFlightRequest && config.getMaxAge() != null) {
        responseHeaders.setAccessControlMaxAge(config.getMaxAge());
    }

    response.flush();
    return true;
}

From source file:org.springframework.web.cors.DefaultCorsProcessor.java

@Nullable
private HttpMethod getMethodToUse(ServerHttpRequest request, boolean isPreFlight) {
    return (isPreFlight ? request.getHeaders().getAccessControlRequestMethod() : request.getMethod());
}

From source file:org.springframework.web.cors.DefaultCorsProcessor.java

private List<String> getHeadersToUse(ServerHttpRequest request, boolean isPreFlight) {
    HttpHeaders headers = request.getHeaders();
    return (isPreFlight ? headers.getAccessControlRequestHeaders() : new ArrayList<>(headers.keySet()));
}

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

@Override
public final boolean doHandshake(ServerHttpRequest request, ServerHttpResponse response,
        WebSocketHandler webSocketHandler) throws IOException, HandshakeFailureException {

    logger.debug("Starting handshake for " + request.getURI());

    if (!HttpMethod.GET.equals(request.getMethod())) {
        response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);
        response.getHeaders().setAllow(Collections.singleton(HttpMethod.GET));
        logger.debug("Only HTTP GET is allowed, current method is " + request.getMethod());
        return false;
    }//from  www. j  av  a2  s  .c o  m
    if (!"WebSocket".equalsIgnoreCase(request.getHeaders().getUpgrade())) {
        handleInvalidUpgradeHeader(request, response);
        return false;
    }
    if (!request.getHeaders().getConnection().contains("Upgrade")
            && !request.getHeaders().getConnection().contains("upgrade")) {
        handleInvalidConnectHeader(request, response);
        return false;
    }
    if (!isWebSocketVersionSupported(request)) {
        handleWebSocketVersionNotSupported(request, response);
        return false;
    }
    if (!isValidOrigin(request)) {
        response.setStatusCode(HttpStatus.FORBIDDEN);
        return false;
    }
    String wsKey = request.getHeaders().getSecWebSocketKey();
    if (wsKey == null) {
        logger.debug("Missing \"Sec-WebSocket-Key\" header");
        response.setStatusCode(HttpStatus.BAD_REQUEST);
        return false;
    }

    String selectedProtocol = selectProtocol(request.getHeaders().getSecWebSocketProtocol());
    // TODO: select extensions

    logger.debug("Upgrading HTTP request");

    response.setStatusCode(HttpStatus.SWITCHING_PROTOCOLS);
    response.getHeaders().setUpgrade("WebSocket");
    response.getHeaders().setConnection("Upgrade");
    response.getHeaders().setSecWebSocketProtocol(selectedProtocol);
    response.getHeaders().setSecWebSocketAccept(getWebSocketKeyHash(wsKey));
    // TODO: response.getHeaders().setSecWebSocketExtensions(extensions);

    response.flush();

    if (logger.isTraceEnabled()) {
        logger.trace("Upgrading with " + webSocketHandler);
    }

    this.requestUpgradeStrategy.upgrade(request, response, selectedProtocol, webSocketHandler);

    return true;
}

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

protected void handleInvalidUpgradeHeader(ServerHttpRequest request, ServerHttpResponse response)
        throws IOException {
    logger.debug("Invalid Upgrade header " + request.getHeaders().getUpgrade());
    response.setStatusCode(HttpStatus.BAD_REQUEST);
    response.getBody().write("Can \"Upgrade\" only to \"WebSocket\".".getBytes("UTF-8"));
}

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

protected void handleInvalidConnectHeader(ServerHttpRequest request, ServerHttpResponse response)
        throws IOException {
    logger.debug("Invalid Connection header " + request.getHeaders().getConnection());
    response.setStatusCode(HttpStatus.BAD_REQUEST);
    response.getBody().write("\"Connection\" must be \"upgrade\".".getBytes("UTF-8"));
}

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

protected boolean isWebSocketVersionSupported(ServerHttpRequest request) {
    String requestedVersion = request.getHeaders().getSecWebSocketVersion();
    for (String supportedVersion : getSupportedVerions()) {
        if (supportedVersion.equals(requestedVersion)) {
            return true;
        }/*ww  w  .ja  v  a2s  .com*/
    }
    return false;
}