22
33import com .google .common .base .Throwables ;
44import com .google .common .collect .Sets ;
5+ import io .kafbat .ui .config .CorsGlobalConfiguration ;
56import io .kafbat .ui .model .ErrorResponseDTO ;
67import java .math .BigDecimal ;
78import java .util .List ;
89import java .util .Map ;
910import java .util .Objects ;
1011import java .util .Set ;
12+ import java .util .function .Consumer ;
1113import java .util .stream .Collectors ;
1214import java .util .stream .Stream ;
1315import org .springframework .boot .autoconfigure .web .WebProperties ;
1618import org .springframework .context .ApplicationContext ;
1719import org .springframework .core .Ordered ;
1820import org .springframework .core .annotation .Order ;
21+ import org .springframework .http .HttpHeaders ;
1922import org .springframework .http .HttpStatus ;
2023import org .springframework .http .MediaType ;
2124import org .springframework .http .codec .ServerCodecConfigurer ;
@@ -78,6 +81,7 @@ private Mono<ServerResponse> renderDefault(Throwable throwable, ServerRequest re
7881 return ServerResponse
7982 .status (ErrorCode .UNEXPECTED .httpStatus ())
8083 .contentType (MediaType .APPLICATION_JSON )
84+ .headers (headers (request ))
8185 .bodyValue (response );
8286 }
8387
@@ -92,6 +96,7 @@ private Mono<ServerResponse> render(CustomBaseException baseException, ServerReq
9296 return ServerResponse
9397 .status (errorCode .httpStatus ())
9498 .contentType (MediaType .APPLICATION_JSON )
99+ .headers (headers (request ))
95100 .bodyValue (response );
96101 }
97102
@@ -122,6 +127,7 @@ private Mono<ServerResponse> render(WebExchangeBindException exception, ServerRe
122127 return ServerResponse
123128 .status (HttpStatus .BAD_REQUEST )
124129 .contentType (MediaType .APPLICATION_JSON )
130+ .headers (headers (request ))
125131 .bodyValue (response );
126132 }
127133
@@ -136,13 +142,20 @@ private Mono<ServerResponse> render(ResponseStatusException exception, ServerReq
136142 return ServerResponse
137143 .status (exception .getStatusCode ())
138144 .contentType (MediaType .APPLICATION_JSON )
145+ .headers (headers (request ))
139146 .bodyValue (response );
140147 }
141148
142149 private String requestId (ServerRequest request ) {
143150 return request .exchange ().getRequest ().getId ();
144151 }
145152
153+ private Consumer <HttpHeaders > headers (ServerRequest request ) {
154+ return (HttpHeaders headers ) -> {
155+ CorsGlobalConfiguration .fillCorsHeader (headers , request .exchange ().getRequest ());
156+ };
157+ }
158+
146159 private BigDecimal currentTimestamp () {
147160 return BigDecimal .valueOf (System .currentTimeMillis ());
148161 }
0 commit comments