You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2024/08/31 13:59:42 UTC

(nifi) branch main updated: NIFI-13695 Fixed Redirect Handling for Custom UI Extensions

This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 31a3014696 NIFI-13695 Fixed Redirect Handling for Custom UI Extensions
31a3014696 is described below

commit 31a301469612807413c1322edb4d11b2f97ff869
Author: Matt Gilman <ma...@gmail.com>
AuthorDate: Fri Aug 30 10:20:23 2024 -0400

    NIFI-13695 Fixed Redirect Handling for Custom UI Extensions
    
    Appending a trailing slash when opening a custom UI and in the query string to fragment filter to avoid a Jetty-based redirect that could lead to losing the proxy path.
    
    This closes #9222
    
    Signed-off-by: David Handermann <ex...@apache.org>
---
 .../apache/nifi/web/servlet/filter/QueryStringToFragmentFilter.java    | 3 ++-
 .../apps/nifi/src/app/ui/common/advanced-ui/advanced-ui.component.ts   | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/nifi-commons/nifi-web-servlet-shared/src/main/java/org/apache/nifi/web/servlet/filter/QueryStringToFragmentFilter.java b/nifi-commons/nifi-web-servlet-shared/src/main/java/org/apache/nifi/web/servlet/filter/QueryStringToFragmentFilter.java
index e6f9a967c8..4113aabbda 100644
--- a/nifi-commons/nifi-web-servlet-shared/src/main/java/org/apache/nifi/web/servlet/filter/QueryStringToFragmentFilter.java
+++ b/nifi-commons/nifi-web-servlet-shared/src/main/java/org/apache/nifi/web/servlet/filter/QueryStringToFragmentFilter.java
@@ -40,7 +40,8 @@ public class QueryStringToFragmentFilter implements Filter {
             // Some NiFi front ends use hash based routing, so they don't need to know the baseHref. With hash based
             // routing query parameters are implemented within the URL fragment. Because of this any query parameters on the
             // original URL are not considered. This filter captures those and adds them to the fragment.
-            final RequestUriBuilder requestUriBuilder = RequestUriBuilder.fromHttpServletRequest(httpServletRequest).path(httpServletRequest.getContextPath()).fragment("/?" + queryString);
+            final String contextPath = httpServletRequest.getContextPath() + "/";
+            final RequestUriBuilder requestUriBuilder = RequestUriBuilder.fromHttpServletRequest(httpServletRequest).path(contextPath).fragment("/?" + queryString);
             final URI redirectUri = requestUriBuilder.build();
 
             final HttpServletResponse httpServletResponse = (HttpServletResponse) response;
diff --git a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/advanced-ui/advanced-ui.component.ts b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/advanced-ui/advanced-ui.component.ts
index bb7258edac..6481897d12 100644
--- a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/advanced-ui/advanced-ui.component.ts
+++ b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/advanced-ui/advanced-ui.component.ts
@@ -81,7 +81,7 @@ export class AdvancedUi {
             .set('editable', params.editable)
             .set('disconnectedNodeAcknowledged', params.disconnectedNodeAcknowledged)
             .toString();
-        const url = `${params.url}?${queryParams}`;
+        const url = `${params.url}/?${queryParams}`;
 
         const sanitizedUrl = this.domSanitizer.sanitize(SecurityContext.URL, url);