Spring Gateway 跨域请求头重复处理过滤器
Spring Gateway 跨域请求头重复处理过滤器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @Component public class CorsResponseHeaderFilter implements GlobalFilter, Ordered { @Override public int getOrder() { return NettyWriteResponseFilter.WRITE_RESPONSE_FILTER_ORDER + 1; } @Override @SuppressWarnings("serial") public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { return chain.filter(exchange).then(Mono.defer(() -> { exchange.getResponse().getHeaders().entrySet().stream() .filter(kv -> (kv.getValue() != null && kv.getValue().size() > 1)) .filter(kv -> (kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN) || kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS))) .forEach(kv -> kv.setValue(new ArrayList<String>() {{ add(kv.getValue().get(0)); }})); return chain.filter(exchange); })); } }
|
个人微信公众号 | 技术交流QQ群 |
|
|