Some Browser are not interpreting a redirect URL without the server part correctly.

git-svn-id: https://svn.libreccm.org/ccm/trunk@5069 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2017-10-21 12:15:51 +00:00
parent 5cc5d39cb5
commit ac05306908
4 changed files with 58 additions and 17 deletions

View File

@ -141,6 +141,19 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
final StringBuffer redirectTo = new StringBuffer();
redirectTo
.append(DispatcherHelper.getRequest().getScheme())
.append("://")
.append(DispatcherHelper.getRequest().getServerName());
if (DispatcherHelper.getRequest().getServerPort() != 80
&& DispatcherHelper.getRequest().getServerPort() != 443) {
redirectTo
.append(":")
.append(DispatcherHelper.getRequest().getServerPort());
}
if (DispatcherHelper.getWebappContext() != null
&& !DispatcherHelper.getWebappContext().trim().isEmpty()) {
redirectTo.append(DispatcherHelper.getWebappContext());

View File

@ -306,6 +306,19 @@ public class ContentSectionServlet extends BaseApplicationServlet {
// try {
final StringBuffer redirectTo = new StringBuffer();
redirectTo
.append(DispatcherHelper.getRequest().getScheme())
.append("://")
.append(DispatcherHelper.getRequest().getServerName());
if (DispatcherHelper.getRequest().getServerPort() != 80
&& DispatcherHelper.getRequest().getServerPort() != 443) {
redirectTo
.append(":")
.append(DispatcherHelper.getRequest().getServerPort());
}
if (DispatcherHelper.getWebappContext() != null
&& !DispatcherHelper.getWebappContext().trim()
.isEmpty()) {
@ -320,16 +333,14 @@ public class ContentSectionServlet extends BaseApplicationServlet {
.append(section.getPath());
if (pathInfo.endsWith("/")) {
redirectTo
// .append("/")
.append(pathInfo.substring(0,
pathInfo.length() - 1));
} else {
redirectTo
// .append("/")
.append(pathInfo);
redirectTo.append(pathInfo);
}
redirectTo
.append(".").append(lang);
.append(".")
.append(lang);
sresp.setHeader("Location", redirectTo.toString());
sresp.sendError(HttpServletResponse.SC_MOVED_PERMANENTLY);

View File

@ -93,8 +93,21 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
}
final StringBuffer redirectTo = new StringBuffer();
redirectTo
.append(DispatcherHelper.getRequest().getScheme())
.append("://")
.append(DispatcherHelper.getRequest().getServerName());
if (DispatcherHelper.getRequest().getServerPort() != 80
&& DispatcherHelper.getRequest().getServerPort() != 443) {
redirectTo
.append(":")
.append(DispatcherHelper.getRequest().getServerPort());
}
if (DispatcherHelper.getWebappContext() != null
&& !DispatcherHelper.getWebappContext().trim().isEmpty()) {
&& !DispatcherHelper.getWebappContext().trim().isEmpty()) {
redirectTo.append(DispatcherHelper.getWebappContext());
}
@ -103,7 +116,9 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
if (cats == null) {
lang = KernelConfig.getConfig().getDefaultLanguage();
} else {
final CategoryLocalizationCollection langs = cats[cats.length - 1].getCategoryLocalizationCollection();
final CategoryLocalizationCollection langs = cats[cats.length
- 1]
.getCategoryLocalizationCollection();
if (!langs.localizationExists(lang)) {
lang = KernelConfig.getConfig().getDefaultLanguage();
}
@ -116,7 +131,6 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
.append("index.")
.append(lang);
sresp.setHeader("Location", redirectTo.toString());
try {
sresp.sendError(HttpServletResponse.SC_MOVED_PERMANENTLY);

View File

@ -26,16 +26,17 @@ import com.arsdigita.persistence.Filter;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
/**
@ -56,11 +57,13 @@ public class Hierarchy extends AbstractTree {
* If set to true, the widget will output items as well as categories. It
* will only output items in the category returned by getItemsRootCategory()
* and its subcategories. Set to false by default.
* @param showItems
*/
public void setShowItems( boolean showItems ) {
m_showItems = showItems;
}
@Override
public Element generateXML(HttpServletRequest request,
HttpServletResponse response) {
Category rootCategory = getModel().getRootCategory();