26 lines
2 KiB
Diff
26 lines
2 KiB
Diff
# UNDF: UNDF-2026-000000678
|
|
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/cors/CORSFilter.java
|
|
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/cors/CORSFilter.java
|
|
@@ -26,6 +26,7 @@ public class CORSFilter implements Handler<RoutingContext> {
|
|
private final boolean wildcardOrigin;
|
|
private final boolean wildcardMethod;
|
|
private final List<Pattern> allowedOriginsRegex;
|
|
+ private final Set<String> allowedOriginsExact; // pre-built at construction: O(1) lookup per request
|
|
private final Set<HttpMethod> configuredHttpMethods;
|
|
|
|
private final String exposedHeaders;
|
|
@@ -40,6 +41,8 @@ public class CORSFilter implements Handler<RoutingContext> {
|
|
this.wildcardOrigin = isOriginConfiguredWithWildcard(this.corsConfig.origins());
|
|
this.wildcardMethod = isConfiguredWithWildcard(corsConfig.methods());
|
|
this.allowedOriginsRegex = this.wildcardOrigin ? List.of() : parseAllowedOriginsRegex(this.corsConfig.origins());
|
|
+ this.allowedOriginsExact = (this.wildcardOrigin || corsConfig.origins().isEmpty())
|
|
+ ? Set.of() : new HashSet<>(corsConfig.origins().get());
|
|
this.configuredHttpMethods = createConfiguredHttpMethods(this.corsConfig.methods());
|
|
this.exposedHeaders = createHeaderString(this.corsConfig.exposedHeaders());
|
|
this.allowedHeaders = createHeaderString(this.corsConfig.headers());
|
|
@@ -147,7 +150,7 @@ public class CORSFilter implements Handler<RoutingContext> {
|
|
//for both normal and preflight requests we need to check the origin
|
|
boolean allowsOrigin = wildcardOrigin;
|
|
boolean originMatches = !wildcardOrigin && corsConfig.origins().isPresent() &&
|
|
- (corsConfig.origins().get().contains(origin) || isOriginAllowedByRegex(allowedOriginsRegex, origin));
|
|
+ (allowedOriginsExact.contains(origin) || isOriginAllowedByRegex(allowedOriginsRegex, origin));
|