don't strip

This commit is contained in:
root
2025-09-14 15:51:24 +05:00
parent faf32f4af8
commit 725f719ed7
2 changed files with 73 additions and 15 deletions
@@ -0,0 +1,71 @@
package konturai.kz.api_gateway.filter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.util.List;
@Component
public class CorsHeaderFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
// Add CORS headers to response
HttpHeaders headers = response.getHeaders();
// Remove any existing CORS headers to prevent duplication
headers.remove(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN);
headers.remove(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS);
headers.remove(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS);
headers.remove(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS);
headers.remove(HttpHeaders.ACCESS_CONTROL_MAX_AGE);
// Get the origin from the request
String origin = request.getHeaders().getFirst(HttpHeaders.ORIGIN);
// Set CORS headers based on the origin
if (origin != null && isAllowedOrigin(origin)) {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, origin);
} else {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "https://konturai.kz");
}
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, PUT, DELETE, OPTIONS");
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*");
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, "3600");
// Handle preflight requests
if (request.getMethod().name().equals("OPTIONS")) {
response.setStatusCode(org.springframework.http.HttpStatus.OK);
return Mono.empty();
}
return chain.filter(exchange);
}
private boolean isAllowedOrigin(String origin) {
return origin != null && (
origin.equals("https://konturai.kz") ||
origin.startsWith("http://localhost:") ||
origin.startsWith("http://127.0.0.1:") ||
origin.startsWith("https://localhost:") ||
origin.startsWith("https://127.0.0.1:")
);
}
@Override
public int getOrder() {
return -1; // High priority to run before other filters
}
}
+2 -15
View File
@@ -13,7 +13,7 @@ spring:
predicates:
- Path=/api/parser/**
filters:
- StripPrefix=2 # Убираем /api/parser
- StripPrefix=0 # Сохраняем полный путь /api/parser
order: 1 # <-- Высокий приоритет
# Маршрут по умолчанию для Core сервиса (НИЗКИЙ ПРИОРИТЕТ)
@@ -23,20 +23,7 @@ spring:
- Path=/** # <-- Матчится со всеми путями
order: 100 # <-- Низкий приоритет (сработает последним)
# CORS конфигурация для поддержки кросс-доменных запросов
globalcors:
corsConfigurations:
'[/**]':
allowedOriginPatterns:
- '*'
allowedMethods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
allowedHeaders: '*'
allowCredentials: true
# CORS обрабатывается через CorsHeaderFilter
# Логирование для отладки маршрутизации
logging: