You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/03/30 01:26:15 UTC
[servicecomb-java-chassis] 02/02: [SCB-1832] Edge will lose public
request headers:fixed as reviewed
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 <25...@qq.com>
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