@Override public String url(HttpServerRequest request) { return request.absoluteURI(); }
@Test public void testGetAbsoluteURI() { server.requestHandler(req -> { assertEquals(req.scheme() + "://localhost:" + DEFAULT_HTTP_PORT + "/foo/bar", req.absoluteURI()); req.response().end(); }); server.listen(onSuccess(s -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/foo/bar", onSuccess(resp -> resp.endHandler(v -> testComplete()))).end(); })); await(); }
@Test public void testAbsoluteURIServer() { server.close(); // Listen on all addresses server = vertx.createHttpServer(createBaseServerOptions().setHost("0.0.0.0")); server.requestHandler(req -> { String absURI = req.absoluteURI(); assertEquals(req.scheme() + "://localhost:8080/path", absURI); req.response().end(); }); server.listen(onSuccess(s -> { String host = "localhost"; String path = "/path"; int port = 8080; client.getNow(port, host, path, onSuccess(resp -> { assertEquals(200, resp.statusCode()); testComplete(); })); })); await(); }
assertEquals(t, req.absoluteURI()); assertEquals("foo_value", req.getHeader("foo")); assertEquals(expectedMethod, req.method());
@Test public void testFollowRedirectHost() throws Exception { String scheme = createBaseClientOptions().isSsl() ? "https" : "http"; waitFor(2); HttpServerOptions options = createBaseServerOptions(); int port = options.getPort() + 1; options.setPort(port); AtomicInteger redirects = new AtomicInteger(); server.requestHandler(req -> { redirects.incrementAndGet(); req.response().setStatusCode(301).putHeader(HttpHeaders.LOCATION, scheme + "://localhost:" + port + "/whatever").end(); }); startServer(); HttpServer server2 = vertx.createHttpServer(options); server2.requestHandler(req -> { assertEquals(1, redirects.get()); assertEquals(scheme + "://localhost:" + port + "/whatever", req.absoluteURI()); req.response().end(); complete(); }); startServer(server2); client.get(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/somepath", onSuccess(resp -> { assertEquals(scheme + "://localhost:" + port + "/whatever", resp.request().absoluteURI()); complete(); })).setFollowRedirects(true).setHost("localhost:" + options.getPort()).end(); await(); }
server2.requestHandler(req -> { assertEquals(1, redirects.get()); assertEquals(scheme + "://localhost:" + port + "/custom", req.absoluteURI()); req.response().end(); complete();
@Override public String absoluteURI() { if (absoluteURI == null) { try { URL url = new URL(delegate.absoluteURI()); URL newUrl = new URL(url.getProtocol(), url.getHost(), url.getPort(), uri); absoluteURI = newUrl.toExternalForm(); } catch (MalformedURLException e) { throw new RuntimeException(e); } } return absoluteURI; }
public static ResteasyUriInfo extractUriInfo(HttpServerRequest req, String contextPath) { String host = req.host(); if (host == null) { host = "unknown"; } String uri = req.absoluteURI(); String protocol = req.scheme(); String uriString; // If we appear to have an absolute URL, don't try to recreate it from the host and request line. if (uri.startsWith(protocol + "://")) { uriString = uri; } else { uriString = protocol + "://" + host + uri; } URI absoluteURI = URI.create(uriString); return new ResteasyUriInfo(uriString, absoluteURI.getRawQuery(), contextPath); }
@Override public void handle(HttpServerRequest request) { if (log.isTraceEnabled()) log.trace("Router: " + System.identityHashCode(this) + " accepting request " + request.method() + " " + request.absoluteURI()); new RoutingContextImpl(null, this, request, routes).next(); }
private void handleRequestWithBody(HttpServerRequest request) { final String contentType = request.headers().get("Content-Type"); if (HttpContentTypes.isFormContentType(contentType)) { request.setExpectMultipart(true); } final Buffer[] bufferHolder = new Buffer[1]; final HttpRequest bodyHttpRequest = vertxUtils.createRequest(request, () -> bufferHolder[0], new HashMap<>(), simpleHttpServer.getDecorators(), simpleHttpServer.getHttpResponseCreator()); if (simpleHttpServer.getShouldContinueReadingRequestBody().test(bodyHttpRequest)) { request.bodyHandler((buffer) -> { bufferHolder[0] = buffer; simpleHttpServer.handleRequest(bodyHttpRequest); }); } else { logger.info("Request body rejected {} {}", request.method(), request.absoluteURI()); } }
@Override public void handle(RoutingContext context) { if (nagHttps && log.isDebugEnabled()) { String uri = context.request().absoluteURI(); if (!uri.startsWith("https:")) { log.debug(
@Test public void testGetAbsoluteURI() { server.requestHandler(req -> { assertEquals(req.scheme() + "://localhost:" + DEFAULT_HTTP_PORT + "/foo/bar", req.absoluteURI()); req.response().end(); }); server.listen(onSuccess(s -> { client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/foo/bar", resp -> resp.endHandler(v -> testComplete())).end(); })); await(); }
when(request.rawMethod()).thenReturn("GET"); when(request.uri()).thenReturn("http://localhost/path"); when(request.absoluteURI()).thenReturn("http://localhost/path"); when(request.host()).thenReturn("localhost"); when(request.path()).thenReturn("/path");
}); } else { logger.info("Request body rejected {} {}", request.method(), request.absoluteURI());
@Test public void testAbsoluteURIServer() { server.close(); // Listen on all addresses server = vertx.createHttpServer(createBaseServerOptions().setHost("0.0.0.0")); server.requestHandler(req -> { String absURI = req.absoluteURI(); assertEquals(req.scheme() + "://localhost:8080/path", absURI); req.response().end(); }); server.listen(onSuccess(s -> { String host = "localhost"; String path = "/path"; int port = 8080; client.getNow(port, host, path, resp -> { assertEquals(200, resp.statusCode()); testComplete(); }); })); await(); }
assertEquals(t, req.absoluteURI()); assertEquals("foo_value", req.getHeader("foo")); assertEquals(expectedMethod, req.method());
@Test public void testFollowRedirectHost() throws Exception { String scheme = createBaseClientOptions().isSsl() ? "https" : "http"; waitFor(2); HttpServerOptions options = createBaseServerOptions(); int port = options.getPort() + 1; options.setPort(port); AtomicInteger redirects = new AtomicInteger(); server.requestHandler(req -> { redirects.incrementAndGet(); req.response().setStatusCode(301).putHeader(HttpHeaders.LOCATION, scheme + "://localhost:" + port + "/whatever").end(); }); startServer(); HttpServer server2 = vertx.createHttpServer(options); server2.requestHandler(req -> { assertEquals(1, redirects.get()); assertEquals(scheme + "://localhost:" + port + "/whatever", req.absoluteURI()); req.response().end(); complete(); }); startServer(server2); client.get(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/somepath", resp -> { assertEquals(scheme + "://localhost:" + port + "/whatever", resp.request().absoluteURI()); complete(); }).setFollowRedirects(true).setHost("localhost:" + options.getPort()).end(); await(); }
String uri = ctx.request().absoluteURI(); if (uri != null && !uri.startsWith("https:")) { log.warn("Using session cookies without https could make you susceptible to session hijacking: " + uri);
server2.requestHandler(req -> { assertEquals(1, redirects.get()); assertEquals(scheme + "://localhost:" + port + "/custom", req.absoluteURI()); req.response().end(); complete();
private static void parsePath(HttpServerRequest request, ApiRequest apimanRequest) { // NB: The apiman version of the headers has already been parsed, so the headers have already been filtered/modified. // Therefore we wrap the original inbound headers (just get) to efficiently access the necessary data. ApiRequestPathInfo parsedPath = requestPathParser.parseEndpoint(request.path(), wrapMultiMap(request.headers())); apimanRequest.setApiOrgId(parsedPath.orgId); apimanRequest.setApiId(parsedPath.apiId); apimanRequest.setApiVersion(parsedPath.apiVersion); apimanRequest.setUrl(request.absoluteURI()); apimanRequest.setDestination(parsedPath.resource); }