diff options
Diffstat (limited to 'server/src/com')
5 files changed, 43 insertions, 0 deletions
diff --git a/server/src/com/vaadin/server/BootstrapHandler.java b/server/src/com/vaadin/server/BootstrapHandler.java index e74f6d7c45..a9343a7e03 100644 --- a/server/src/com/vaadin/server/BootstrapHandler.java +++ b/server/src/com/vaadin/server/BootstrapHandler.java @@ -681,6 +681,12 @@ public abstract class BootstrapHandler extends SynchronizedRequestHandler { appConfig.put(ApplicationConstants.SERVICE_URL, serviceUrl); } + boolean sendUrlsAsParameters = vaadinService + .getDeploymentConfiguration().isSendUrlsAsParameters(); + if (!sendUrlsAsParameters) { + appConfig.put("sendUrlsAsParameters", false); + } + return appConfig; } diff --git a/server/src/com/vaadin/server/Constants.java b/server/src/com/vaadin/server/Constants.java index 02a992a882..8036490333 100644 --- a/server/src/com/vaadin/server/Constants.java +++ b/server/src/com/vaadin/server/Constants.java @@ -136,6 +136,7 @@ public interface Constants { static final String SERVLET_PARAMETER_UI_PROVIDER = "UIProvider"; static final String SERVLET_PARAMETER_LEGACY_PROPERTY_TOSTRING = "legacyPropertyToString"; static final String SERVLET_PARAMETER_SYNC_ID_CHECK = "syncIdCheck"; + static final String SERVLET_PARAMETER_SENDURLSASPARAMETERS = "sendUrlsAsParameters"; // Configurable parameter names static final String PARAMETER_VAADIN_RESOURCES = "Resources"; diff --git a/server/src/com/vaadin/server/DefaultDeploymentConfiguration.java b/server/src/com/vaadin/server/DefaultDeploymentConfiguration.java index 22d5210eaa..b26e048431 100644 --- a/server/src/com/vaadin/server/DefaultDeploymentConfiguration.java +++ b/server/src/com/vaadin/server/DefaultDeploymentConfiguration.java @@ -59,6 +59,8 @@ public class DefaultDeploymentConfiguration extends */ public static final boolean DEFAULT_SYNC_ID_CHECK = true; + public static final boolean DEFAULT_SEND_URLS_AS_PARAMETERS = true; + private final Properties initParameters; private boolean productionMode; private boolean xsrfProtectionEnabled; @@ -69,6 +71,7 @@ public class DefaultDeploymentConfiguration extends private final Class<?> systemPropertyBaseClass; private LegacyProperyToStringMode legacyPropertyToStringMode; private boolean syncIdCheck; + private boolean sendUrlsAsParameters; /** * Create a new deployment configuration instance. @@ -93,6 +96,7 @@ public class DefaultDeploymentConfiguration extends checkPushMode(); checkLegacyPropertyToString(); checkSyncIdCheck(); + checkSendUrlsAsParameters(); } private void checkLegacyPropertyToString() { @@ -258,6 +262,16 @@ public class DefaultDeploymentConfiguration extends /** * {@inheritDoc} * <p> + * The default value is <code>true</code>. + */ + @Override + public boolean isSendUrlsAsParameters() { + return sendUrlsAsParameters; + } + + /** + * {@inheritDoc} + * <p> * The default mode is {@link PushMode#DISABLED}. */ @Override @@ -347,6 +361,13 @@ public class DefaultDeploymentConfiguration extends Boolean.toString(DEFAULT_SYNC_ID_CHECK)).equals("true"); } + private void checkSendUrlsAsParameters() { + sendUrlsAsParameters = getApplicationOrSystemProperty( + Constants.SERVLET_PARAMETER_SENDURLSASPARAMETERS, + Boolean.toString(DEFAULT_SEND_URLS_AS_PARAMETERS)).equals( + "true"); + } + private Logger getLogger() { return Logger.getLogger(getClass().getName()); } diff --git a/server/src/com/vaadin/server/DeploymentConfiguration.java b/server/src/com/vaadin/server/DeploymentConfiguration.java index 3c20518c39..968ec7c0c3 100644 --- a/server/src/com/vaadin/server/DeploymentConfiguration.java +++ b/server/src/com/vaadin/server/DeploymentConfiguration.java @@ -111,6 +111,15 @@ public interface DeploymentConfiguration extends Serializable { public int getHeartbeatInterval(); /** + * Returns whether the sending of URL's as GET and POST parameters in + * requests with content-type <code>application/x-www-form-urlencoded</code> + * is enabled or not. + * + * @return <code>false</code> if set to false or <code>true</code> otherwise + */ + public boolean isSendUrlsAsParameters(); + + /** * Returns whether a session should be closed when all its open UIs have * been idle for longer than its configured maximum inactivity time. * <p> diff --git a/server/src/com/vaadin/server/Page.java b/server/src/com/vaadin/server/Page.java index 3ddf4862b2..74d79ade50 100644 --- a/server/src/com/vaadin/server/Page.java +++ b/server/src/com/vaadin/server/Page.java @@ -939,6 +939,12 @@ public class Page implements Serializable { * @return The browser location URI. */ public URI getLocation() { + if (location == null + && !uI.getSession().getConfiguration().isSendUrlsAsParameters()) { + throw new IllegalStateException("Location is not available as the " + + Constants.SERVLET_PARAMETER_SENDURLSASPARAMETERS + + " parameter is configured as false"); + } return location; } |