/** * @param siteMapItems * @return <code>true</code> if any of the <code>siteMapItems</code> or its descendents uses a different scheme than * the scheme of this {@link MountService} */ private Boolean multipleSchemesUsed(final List<HstSiteMapItem> siteMapItems) { for (HstSiteMapItem siteMapItem : siteMapItems) { if (siteMapItem.isSchemeAgnostic()) { continue; } if (!scheme.equals(siteMapItem.getScheme())) { return Boolean.TRUE; } if (multipleSchemesUsed(siteMapItem.getChildren())) { return Boolean.TRUE; } } return Boolean.FALSE; }
res.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); urlWithExplicitSchemeForRequest = createURLWithExplicitSchemeForRequest(hstSiteMapItem.getScheme(), resolvedSiteMapItem.getResolvedMount().getMount(), req); log.debug("Scheme not allowed: MOVED PERMANENTLY {} to {}", containerRequest, urlWithExplicitSchemeForRequest); res.setHeader("Location", urlWithExplicitSchemeForRequest); case HttpServletResponse.SC_TEMPORARY_REDIRECT: urlWithExplicitSchemeForRequest = createURLWithExplicitSchemeForRequest(hstSiteMapItem.getScheme(), resolvedSiteMapItem.getResolvedMount().getMount(), req); log.debug("Scheme not allowed: MOVED TEMPORARILY {} to {}", containerRequest, urlWithExplicitSchemeForRequest); res.sendRedirect(urlWithExplicitSchemeForRequest);
private boolean isSupportedScheme(final HstMutableRequestContext requestContext, final ResolvedSiteMapItem resolvedSiteMapItem, final String farthestRequestScheme) { if (requestContext.isCmsRequest()) { // cms request always supported as piggybacking on cms host return true; } final HstSiteMapItem hstSiteMapItem = resolvedSiteMapItem.getHstSiteMapItem(); if (hstSiteMapItem.isSchemeAgnostic()) { return true; } if (hstSiteMapItem.getScheme().equals(farthestRequestScheme)) { return true; } if ("https".equals(farthestRequestScheme) && resolvedSiteMapItem.getResolvedMount().getMount().getVirtualHost().isCustomHttpsSupported()) { // although sitemap item indicates http, https is approved by default to be rendered return true; } return false; }
scheme = parentItem != null ? parentItem.getScheme() : mountSiteMapConfiguration.getScheme();
if (!hstSiteMapItem.isSchemeAgnostic()) { final String farthestRequestScheme = HstRequestUtils.getFarthestRequestScheme(servletRequest); if (!farthestRequestScheme.equals(hstSiteMapItem.getScheme())) { fullyQualifiedPrefix = hstSiteMapItem.getScheme() + "://" + mount.getVirtualHost().getHostName(); if (mount.isPortInUrl()) { int port = mount.getPort();
return scheme; scheme = siteMapItem.getScheme(); return scheme;
scheme = item.getScheme(); wildCard = item.isWildCard(); any = item.isAny();