diff --git a/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcProperties.java b/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcProperties.java index 4ae6768..68afad8 100644 --- a/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcProperties.java +++ b/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcProperties.java @@ -69,6 +69,11 @@ public class SofaBootRpcProperties { private String restPort; private String restIoThreadSize; private String restContextPath; + + /** + * cors settings + */ + private String restAllowedOrigins; // has no use private String restThreadPoolCoreSize; private String restThreadPoolMaxSize; @@ -553,6 +558,15 @@ public void setHystrixEnable(String hystrixEnable) { this.hystrixEnable = hystrixEnable; } + public String getRestAllowedOrigins() { + return StringUtils.isEmpty(restAllowedOrigins) ? getDotString(new Object() { + }.getClass().getEnclosingMethod().getName()) : restAllowedOrigins; + } + + public void setRestAllowedOrigins(String restAllowedOrigins) { + this.restAllowedOrigins = restAllowedOrigins; + } + private String getDotString(String enclosingMethodName) { if (environment == null) { return null; diff --git a/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainer.java b/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainer.java index 29e0a7e..a7a3cdb 100644 --- a/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainer.java +++ b/sofa-boot-core/src/main/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainer.java @@ -22,11 +22,13 @@ import com.alipay.sofa.rpc.boot.config.SofaBootRpcConfigConstants; import com.alipay.sofa.rpc.boot.config.SofaBootRpcProperties; import com.alipay.sofa.rpc.boot.log.SofaBootRpcLoggerFactory; +import com.alipay.sofa.rpc.common.RpcConstants; import com.alipay.sofa.rpc.config.ServerConfig; import com.alipay.sofa.rpc.server.bolt.BoltServer; import org.slf4j.Logger; import org.springframework.util.StringUtils; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadPoolExecutor; @@ -298,6 +300,7 @@ ServerConfig createRestServerConfig() { String telnetStr = sofaBootRpcProperties.getRestTelnet(); String daemonStr = sofaBootRpcProperties.getRestDaemon(); + String allowedOrigins = sofaBootRpcProperties.getRestAllowedOrigins(); int port; int ioThreadCount; int restThreadPoolMaxSize; @@ -345,13 +348,20 @@ ServerConfig createRestServerConfig() { daemon = Boolean.parseBoolean(daemonStr); } + Map parameters = new HashMap(); + + if (StringUtils.hasText(allowedOrigins)) { + parameters.put(RpcConstants.ALLOWED_ORIGINS, allowedOrigins); + } + ServerConfig serverConfig = new ServerConfig() .setPort(port) .setIoThreads(ioThreadCount) .setMaxThreads(restThreadPoolMaxSize) .setPayload(maxRequestSize) .setTelnet(telnet) - .setDaemon(daemon); + .setDaemon(daemon) + .setParameters(parameters); if (!StringUtils.isEmpty(contextPath)) { serverConfig.setContextPath(contextPath); diff --git a/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcPropertiesTest.java b/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcPropertiesTest.java index 313d90e..ac23ff2 100644 --- a/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcPropertiesTest.java +++ b/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/config/SofaBootRpcPropertiesTest.java @@ -17,7 +17,6 @@ package com.alipay.sofa.rpc.boot.config; import com.alipay.sofa.rpc.boot.container.ConsumerConfigContainer; -import com.alipay.sofa.rpc.common.RpcOptions; import com.alipay.sofa.rpc.config.ConsumerConfig; import com.alipay.sofa.rpc.test.bean.SampleFacade; import com.alipay.sofa.runtime.api.annotation.SofaReference; @@ -29,7 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import java.lang.reflect.Field; @@ -41,7 +39,8 @@ SofaBootRpcProperties.PREFIX + ".bolt.port=5000", "com_alipay_sofa_rpc_bolt_thread_pool_max_size=600", SofaBootRpcProperties.PREFIX + ".registries.zk1=zookeeper://xxxx", - SofaBootRpcProperties.PREFIX + ".consumer.repeated.reference.limit=10" + SofaBootRpcProperties.PREFIX + ".consumer.repeated.reference.limit=10", + SofaBootRpcProperties.PREFIX + ".rest.allowed.origins=a.com" }) public class SofaBootRpcPropertiesTest { @Autowired @@ -97,4 +96,10 @@ public void testCustoMapConfig() { Assert.assertEquals("zookeeper://xxxx", map.get("zk1")); } + @Test + public void testAllowedOriginis() { + String result = sofaBootRpcProperties.getRestAllowedOrigins(); + Assert.assertEquals("a.com", result); + } + } diff --git a/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainerTest.java b/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainerTest.java index b88fc3b..981ce67 100644 --- a/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainerTest.java +++ b/sofa-boot-starter/src/test/java/com/alipay/sofa/rpc/boot/container/ServerConfigContainerTest.java @@ -19,6 +19,7 @@ import com.alipay.sofa.rpc.boot.common.SofaBootRpcRuntimeException; import com.alipay.sofa.rpc.boot.config.SofaBootRpcConfigConstants; import com.alipay.sofa.rpc.boot.config.SofaBootRpcProperties; +import com.alipay.sofa.rpc.common.RpcConstants; import com.alipay.sofa.rpc.config.ServerConfig; import com.alipay.sofa.rpc.test.base.ActivelyDestroyTest; import org.junit.Assert; @@ -102,7 +103,7 @@ public void testRestServerConfiguration() { sofaBootRpcProperties.setRestMaxRequestSize("1000"); sofaBootRpcProperties.setRestTelnet("true"); sofaBootRpcProperties.setRestDaemon("true"); - + sofaBootRpcProperties.setRestAllowedOrigins("a.com"); ServerConfig serverConfig = serverConfigContainer .createRestServerConfig(); @@ -114,6 +115,8 @@ public void testRestServerConfiguration() { Assert.assertEquals(1000, serverConfig.getPayload()); Assert.assertTrue(serverConfig.isTelnet()); Assert.assertTrue(serverConfig.isDaemon()); + Assert.assertEquals("a.com", serverConfig.getParameters().get(RpcConstants.ALLOWED_ORIGINS)); + } @Test