Skip to content

Commit

Permalink
[release-2.4] Set property server.forward-header-strategy to framewor…
Browse files Browse the repository at this point in the history
…k by default (#3710)

This is an automated cherry-pick of #3709

/assign JohnNiang

```release-note
解决反向代理后无法正确获取当前请求 URI 的问题
```
  • Loading branch information
halo-dev-bot committed Apr 7, 2023
1 parent fe02bd8 commit ed647c2
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions application/src/main/resources/application.yaml
@@ -1,5 +1,6 @@
server:
port: 8090
forward-headers-strategy: framework
compression:
enabled: true
error:
Expand Down
55 changes: 55 additions & 0 deletions application/src/test/java/run/halo/app/XForwardHeaderTest.java
@@ -0,0 +1,55 @@
package run.halo.app;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.test.StepVerifier;

@SpringBootTest(webEnvironment = RANDOM_PORT,
properties = "server.forward-headers-strategy=framework")
class XForwardHeaderTest {

@LocalServerPort
int port;

@Test
void shouldGetCorrectProtoFromXForwardHeaders() {
var response = WebClient.create("http://localhost:" + port)
.get().uri("/print-uri")
.header("X-Forwarded-Proto", "https")
.header("X-Forwarded-Host", "halo.run")
.header("X-Forwarded-Port", "6666")
.retrieve()
.toEntity(String.class);
StepVerifier.create(response)
.assertNext(entity -> {
assertEquals(HttpStatus.OK, entity.getStatusCode());
assertEquals("\"https://halo.run:6666/print-uri\"", entity.getBody());
})
.verifyComplete();
}

@TestConfiguration
static class Configuration {

@Bean
RouterFunction<ServerResponse> printUri() {
return route(GET("/print-uri"),
request -> {
var uri = request.exchange().getRequest().getURI();
return ServerResponse.ok().bodyValue(uri);
});
}
}
}

0 comments on commit ed647c2

Please sign in to comment.