You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2017/10/04 19:14:29 UTC
svn commit: r1811137 -
/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
Author: markt
Date: Wed Oct 4 19:14:29 2017
New Revision: 1811137
URL: http://svn.apache.org/viewvc?rev=1811137&view=rev
Log:
Refactor the CORS filter to simplify the code
Based on a patch by isapir
Modified:
tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1811137&r1=1811136&r2=1811137&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Wed Oct 4 19:14:29 2017
@@ -178,24 +178,38 @@ public class CorsFilter extends GenericF
@Override
public void init() throws ServletException {
- // Initialize defaults
- parseAndStore(DEFAULT_ALLOWED_ORIGINS, DEFAULT_ALLOWED_HTTP_METHODS,
- DEFAULT_ALLOWED_HTTP_HEADERS, DEFAULT_EXPOSED_HEADERS,
- DEFAULT_SUPPORTS_CREDENTIALS, DEFAULT_PREFLIGHT_MAXAGE,
- DEFAULT_DECORATE_REQUEST);
-
- String configAllowedOrigins = getInitParameter(PARAM_CORS_ALLOWED_ORIGINS);
- String configAllowedHttpMethods = getInitParameter(PARAM_CORS_ALLOWED_METHODS);
- String configAllowedHttpHeaders = getInitParameter(PARAM_CORS_ALLOWED_HEADERS);
- String configExposedHeaders = getInitParameter(PARAM_CORS_EXPOSED_HEADERS);
- String configSupportsCredentials = getInitParameter(PARAM_CORS_SUPPORT_CREDENTIALS);
- String configPreflightMaxAge = getInitParameter(PARAM_CORS_PREFLIGHT_MAXAGE);
- String configDecorateRequest = getInitParameter(PARAM_CORS_REQUEST_DECORATE);
-
- parseAndStore(configAllowedOrigins, configAllowedHttpMethods,
- configAllowedHttpHeaders, configExposedHeaders,
- configSupportsCredentials, configPreflightMaxAge,
- configDecorateRequest);
+ parseAndStore(
+ getInitParameter(PARAM_CORS_ALLOWED_ORIGINS, DEFAULT_ALLOWED_ORIGINS),
+ getInitParameter(PARAM_CORS_ALLOWED_METHODS, DEFAULT_ALLOWED_HTTP_METHODS),
+ getInitParameter(PARAM_CORS_ALLOWED_HEADERS, DEFAULT_ALLOWED_HTTP_HEADERS),
+ getInitParameter(PARAM_CORS_EXPOSED_HEADERS, DEFAULT_EXPOSED_HEADERS),
+ getInitParameter(PARAM_CORS_SUPPORT_CREDENTIALS, DEFAULT_SUPPORTS_CREDENTIALS),
+ getInitParameter(PARAM_CORS_PREFLIGHT_MAXAGE, DEFAULT_PREFLIGHT_MAXAGE),
+ getInitParameter(PARAM_CORS_REQUEST_DECORATE, DEFAULT_DECORATE_REQUEST)
+ );
+ }
+
+
+ /**
+ * This method returns the parameter's value if it exists, or defaultValue
+ * if not.
+ *
+ * @param name The parameter's name
+ *
+ * @param defaultValue The default value to return if the parameter does
+ * not exist
+ *
+ * @return The parameter's value or the default value if the parameter does
+ * not exist
+ */
+ private String getInitParameter(String name, String defaultValue){
+
+ String value = getInitParameter(name);
+ if (value != null) {
+ return value;
+ }
+
+ return defaultValue;
}
@@ -718,66 +732,49 @@ public class CorsFilter extends GenericF
final String exposedHeaders, final String supportsCredentials,
final String preflightMaxAge, final String decorateRequest)
throws ServletException {
- if (allowedOrigins != null) {
- if (allowedOrigins.trim().equals("*")) {
- this.anyOriginAllowed = true;
- } else {
- this.anyOriginAllowed = false;
- Set<String> setAllowedOrigins =
- parseStringToSet(allowedOrigins);
- this.allowedOrigins.clear();
- this.allowedOrigins.addAll(setAllowedOrigins);
- }
- }
- if (allowedHttpMethods != null) {
- Set<String> setAllowedHttpMethods =
- parseStringToSet(allowedHttpMethods);
- this.allowedHttpMethods.clear();
- this.allowedHttpMethods.addAll(setAllowedHttpMethods);
- }
-
- if (allowedHttpHeaders != null) {
- Set<String> setAllowedHttpHeaders =
- parseStringToSet(allowedHttpHeaders);
- Set<String> lowerCaseHeaders = new HashSet<>();
- for (String header : setAllowedHttpHeaders) {
- String lowerCase = header.toLowerCase(Locale.ENGLISH);
- lowerCaseHeaders.add(lowerCase);
- }
- this.allowedHttpHeaders.clear();
- this.allowedHttpHeaders.addAll(lowerCaseHeaders);
- }
-
- if (exposedHeaders != null) {
- Set<String> setExposedHeaders = parseStringToSet(exposedHeaders);
- this.exposedHeaders.clear();
- this.exposedHeaders.addAll(setExposedHeaders);
- }
-
- if (supportsCredentials != null) {
- // For any value other then 'true' this will be false.
- this.supportsCredentials = Boolean
- .parseBoolean(supportsCredentials);
- }
-
- if (preflightMaxAge != null) {
- try {
- if (!preflightMaxAge.isEmpty()) {
- this.preflightMaxAge = Long.parseLong(preflightMaxAge);
- } else {
- this.preflightMaxAge = 0L;
- }
- } catch (NumberFormatException e) {
- throw new ServletException(
- sm.getString("corsFilter.invalidPreflightMaxAge"), e);
+ if (allowedOrigins.trim().equals("*")) {
+ this.anyOriginAllowed = true;
+ } else {
+ this.anyOriginAllowed = false;
+ Set<String> setAllowedOrigins = parseStringToSet(allowedOrigins);
+ this.allowedOrigins.clear();
+ this.allowedOrigins.addAll(setAllowedOrigins);
+ }
+
+ Set<String> setAllowedHttpMethods = parseStringToSet(allowedHttpMethods);
+ this.allowedHttpMethods.clear();
+ this.allowedHttpMethods.addAll(setAllowedHttpMethods);
+
+ Set<String> setAllowedHttpHeaders = parseStringToSet(allowedHttpHeaders);
+ Set<String> lowerCaseHeaders = new HashSet<>();
+ for (String header : setAllowedHttpHeaders) {
+ String lowerCase = header.toLowerCase(Locale.ENGLISH);
+ lowerCaseHeaders.add(lowerCase);
+ }
+ this.allowedHttpHeaders.clear();
+ this.allowedHttpHeaders.addAll(lowerCaseHeaders);
+
+ Set<String> setExposedHeaders = parseStringToSet(exposedHeaders);
+ this.exposedHeaders.clear();
+ this.exposedHeaders.addAll(setExposedHeaders);
+
+ // For any value other then 'true' this will be false.
+ this.supportsCredentials = Boolean.parseBoolean(supportsCredentials);
+
+ try {
+ if (!preflightMaxAge.isEmpty()) {
+ this.preflightMaxAge = Long.parseLong(preflightMaxAge);
+ } else {
+ this.preflightMaxAge = 0L;
}
+ } catch (NumberFormatException e) {
+ throw new ServletException(
+ sm.getString("corsFilter.invalidPreflightMaxAge"), e);
}
- if (decorateRequest != null) {
- // For any value other then 'true' this will be false.
- this.decorateRequest = Boolean.parseBoolean(decorateRequest);
- }
+ // For any value other then 'true' this will be false.
+ this.decorateRequest = Boolean.parseBoolean(decorateRequest);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org