This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 9ed556dbf3c39138e04345b5ba851e5a2f2d2a81 Author: heyile <[email protected]> AuthorDate: Fri Mar 27 20:49:01 2020 +0800 [SCB-1832] Edge will lose public request headers:fixed as reviewed --- ...tFilter.java => EdgeAddHeaderClientFilter.java} | 26 +++++++++++----------- ...servicecomb.common.rest.filter.HttpClientFilter | 2 +- .../it-edge/src/main/resources/microservice.yaml | 8 ++++--- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeClientFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java similarity index 77% rename from edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeClientFilter.java rename to edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java index 22d4f06..d461d3c 100644 --- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeClientFilter.java +++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java @@ -32,34 +32,34 @@ import org.slf4j.LoggerFactory; import com.netflix.config.ConcurrentCompositeConfiguration; import com.netflix.config.DynamicPropertyFactory; -public class DefaultEdgeClientFilter implements HttpClientFilter { - private static final Logger LOGGER = LoggerFactory.getLogger(DefaultEdgeClientFilter.class); +public class EdgeAddHeaderClientFilter implements HttpClientFilter { + private static final Logger LOGGER = LoggerFactory.getLogger(EdgeAddHeaderClientFilter.class); - private static final String KEY_ENABLED = "servicecomb.http.dispatcher.edge.public.enabled"; + private static final String KEY_ENABLED = "servicecomb.edge.filter.addHeader.enabled"; - private static final String KEY_HEADERS = "servicecomb.http.dispatcher.edge.public.headers"; + private static final String KEY_HEADERS = "servicecomb.edge.filter.addHeader.allowedHeaders"; - private static boolean ENABLED = false; + private List<String> publicHeaders = new ArrayList<>(); - private static List<String> PUBLIC_HEADER = new ArrayList<>(); + private boolean enabled = false; - static { + public EdgeAddHeaderClientFilter() { init(); ((ConcurrentCompositeConfiguration) DynamicPropertyFactory .getBackingConfigurationSource()).addConfigurationListener(event -> { if (event.getPropertyName().startsWith(KEY_HEADERS) || event.getPropertyName().startsWith(KEY_ENABLED)) { - LOGGER.info("Public header config have been changed. Event=" + event.getType()); + LOGGER.info("Public headers config have been changed. Event=" + event.getType()); init(); } }); } - private static void init() { - ENABLED = DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, false).get(); + private void init() { + enabled = DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, false).get(); String publicHeaderStr = DynamicPropertyFactory.getInstance().getStringProperty(KEY_HEADERS, "").get(); String[] split = publicHeaderStr.split(","); if (split.length > 0) { - PUBLIC_HEADER = Arrays.asList(split); + publicHeaders = Arrays.asList(split); } } @@ -70,13 +70,13 @@ public class DefaultEdgeClientFilter implements HttpClientFilter { @Override public boolean enabled() { - return ENABLED; + return enabled; } @Override public void beforeSendRequest(Invocation invocation, HttpServletRequestEx requestEx) { HttpServletRequestEx oldRequest = invocation.getRequestEx(); - PUBLIC_HEADER.forEach(key -> { + publicHeaders.forEach(key -> { if (StringUtils.isEmpty(oldRequest.getHeader(key))) { return; } diff --git a/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter b/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter index bfdfd2a..c07a4b7 100644 --- a/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter +++ b/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter @@ -15,4 +15,4 @@ # limitations under the License. # -org.apache.servicecomb.edge.core.DefaultEdgeClientFilter +org.apache.servicecomb.edge.core.EdgeAddHeaderClientFilter diff --git a/integration-tests/it-edge/src/main/resources/microservice.yaml b/integration-tests/it-edge/src/main/resources/microservice.yaml index fcf649e..81fad60 100644 --- a/integration-tests/it-edge/src/main/resources/microservice.yaml +++ b/integration-tests/it-edge/src/main/resources/microservice.yaml @@ -158,12 +158,14 @@ servicecomb: transport: rest edgePublicHeadersSpringMVCSchema: transport: rest + edge: + filter: + addHeader: + enabled: true + allowedHeaders: external_1,external_2 http: dispatcher: edge: - public: - headers: external_1,external_2 - enabled: true default: enabled: true prefix: rest
