From 56af560ceca21be4ee48e722562c9a49ce8a5078 Mon Sep 17 00:00:00 2001 From: Jean Detoeuf Date: Tue, 2 Feb 2016 09:14:58 +0100 Subject: [PATCH] Added support for X-Forwarded-Path header --- .../hateoas/mvc/ControllerLinkBuilder.java | 6 ++++++ .../hateoas/mvc/ControllerLinkBuilderUnitTest.java | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/org/springframework/hateoas/mvc/ControllerLinkBuilder.java b/src/main/java/org/springframework/hateoas/mvc/ControllerLinkBuilder.java index a71d057a3..6eb256bad 100755 --- a/src/main/java/org/springframework/hateoas/mvc/ControllerLinkBuilder.java +++ b/src/main/java/org/springframework/hateoas/mvc/ControllerLinkBuilder.java @@ -261,6 +261,12 @@ static UriComponentsBuilder getBuilder() { builder.port(Integer.parseInt(port)); } + String path = request.getHeader("X-Forwarded-Path"); + + if (hasText(path)) { + builder.path(path); + } + return builder; } diff --git a/src/test/java/org/springframework/hateoas/mvc/ControllerLinkBuilderUnitTest.java b/src/test/java/org/springframework/hateoas/mvc/ControllerLinkBuilderUnitTest.java index f4af2b525..ca136ef5e 100644 --- a/src/test/java/org/springframework/hateoas/mvc/ControllerLinkBuilderUnitTest.java +++ b/src/test/java/org/springframework/hateoas/mvc/ControllerLinkBuilderUnitTest.java @@ -336,6 +336,17 @@ public void usesForwardedHostFromHeaderWithDefaultPort() { assertThat(link.getHref(), startsWith("http://foobarhost/")); } + @Test + public void usesForwardedHostAndPathFromHeaderAndPortFromAnotherHeader() { + + request.addHeader("X-Forwarded-Host", "foobarhost"); + request.addHeader("X-Forwarded-Path", "/foo"); + request.addHeader("X-Forwarded-Port", "1234"); + + Link link = linkTo(PersonControllerImpl.class).withSelfRel(); + assertThat(link.getHref(), startsWith("http://foobarhost:1234/foo")); + } + /** * @see #114 */