diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/ServletAppUtils.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/ServletAppUtils.java index 8ebcbf0333..a5ec87b903 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/ServletAppUtils.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/ServletAppUtils.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2025 DBeaver Corp and others + * Copyright (C) 2010-2026 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -294,19 +294,34 @@ public class ServletAppUtils { @NotNull public static String getOriginFromRequest(@NotNull HttpServletRequest request) { String origin = request.getHeader(HEADER_ORIGIN); + if (log.isTraceEnabled()) { + log.trace("Origin header: " + origin); + } if (CommonUtils.isEmpty(origin)) { origin = request.getHeader(HEADER_X_ORIGIN); + if (log.isTraceEnabled()) { + log.trace("X-Origin header: " + origin); + } } if (CommonUtils.isEmpty(origin)) { origin = request.getHeader(HEADER_REFERER); + if (log.isTraceEnabled()) { + log.trace("Referer header: " + origin); + } } String forwardedScheme = request.getHeader(HEADER_FORWARDED_SCHEME); String forwardedHost = request.getHeader(HEADER_FORWARDED_HOST); if (CommonUtils.isNotEmpty(forwardedScheme) && CommonUtils.isNotEmpty(forwardedHost)) { origin = forwardedScheme + "://" + forwardedHost; + if (log.isTraceEnabled()) { + log.trace("forwarded origin: " + origin); + } } if (CommonUtils.isEmpty(origin)) { URI requestUrl = URI.create(request.getRequestURL().toString()); + if (log.isTraceEnabled()) { + log.trace("Request URL: " + requestUrl); + } origin = getRootUrlFromUri(requestUrl) + "/"; } origin = removeSideSlashes(origin); @@ -333,6 +348,9 @@ public class ServletAppUtils { log.error("Failed to create URI without port", e); } } + if (log.isTraceEnabled()) { + log.trace("Origin URI: " + origin); + } return origin; } diff --git a/server/bundles/io.cloudbeaver.server.ce/src/io/cloudbeaver/server/jetty/RequestHostFilter.java b/server/bundles/io.cloudbeaver.server.ce/src/io/cloudbeaver/server/jetty/RequestHostFilter.java index abdcb13a8c..dca9cec893 100644 --- a/server/bundles/io.cloudbeaver.server.ce/src/io/cloudbeaver/server/jetty/RequestHostFilter.java +++ b/server/bundles/io.cloudbeaver.server.ce/src/io/cloudbeaver/server/jetty/RequestHostFilter.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2025 DBeaver Corp and others + * Copyright (C) 2010-2026 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; + public class RequestHostFilter implements Filter { private static final Log log = Log.getLog(RequestHostFilter.class); @@ -74,9 +75,19 @@ public class RequestHostFilter implements Filter { chain.doFilter(request, response); return; } - boolean isIpAddress = InetAddresses.isInetAddress(originUri.getHost()); + + if (CommonUtils.isNotEmpty(originUri.getHost())) { + requestAllowed = InetAddresses.isInetAddress(originUri.getHost()); + } else { + log.debug( + "Request origin host is null, request URI - " + originUri + + ", request path - " + httpRequest.getServletPath() + + ", request url - " + httpRequest.getRequestURL() + ); + + } + String servletPath = httpRequest.getServletPath(); - requestAllowed = isIpAddress; if (!requestAllowed) { if (CommonUtils.isNotEmpty(servletPath)) { for (String excludedPath : excludedPaths) {