提交 60eb9e9c 编写于 作者: S Sam Brannen

Introduce 'value' alias for 'origin' in @CrossOrigin

Issue: SPR-11393
上级 f0c08130
......@@ -22,6 +22,8 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
/**
* Marks the annotated method or type as permitting cross origin requests.
*
......@@ -37,13 +39,21 @@ import java.lang.annotation.Target;
@Documented
public @interface CrossOrigin {
/**
* Alias for {@link #origin}.
*/
@AliasFor(attribute = "origin")
String[] value() default { "*" };
/**
* List of allowed origins.
* <p>These values are placed in the {@code Access-Control-Allow-Origin}
* header of both the pre-flight response and the actual response.
* <p>Defaults to {@code "*"} which means that all origins are allowed.
* @see #value
*/
String[] origin() default {"*"};
@AliasFor(attribute = "value")
String[] origin() default { "*" };
/**
* List of request headers that can be used during the actual request.
......@@ -52,7 +62,7 @@ public @interface CrossOrigin {
* <p>Defaults to {@code "*"} which means that all headers requested
* by the client are allowed.
*/
String[] allowedHeaders() default {"*"};
String[] allowedHeaders() default { "*" };
/**
* List of response headers that the user-agent will allow the client to access.
......
......@@ -17,6 +17,7 @@
package org.springframework.web.servlet.mvc.method.annotation;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.junit.Before;
import org.junit.Rule;
......@@ -128,7 +129,17 @@ public class CrossOriginTests {
assertArrayEquals(new String[]{"header1", "header2"}, config.getAllowedHeaders().toArray());
assertArrayEquals(new String[]{"header3", "header4"}, config.getExposedHeaders().toArray());
assertEquals(new Long(123), config.getMaxAge());
assertEquals(false, config.getAllowCredentials());
assertFalse(config.getAllowCredentials());
}
@Test
public void customOriginDefinedViaValueAttribute() throws Exception {
this.handlerMapping.registerHandler(new MethodLevelController());
this.request.setRequestURI("/customOrigin");
CorsConfiguration config = getCorsConfiguration(this.handlerMapping.getHandler(request), false);
assertNotNull(config);
assertEquals(Arrays.asList("http://example.com"), config.getAllowedOrigins());
assertTrue(config.getAllowCredentials());
}
@Test
......@@ -279,6 +290,11 @@ public class CrossOriginTests {
@RequestMapping(path = "/customized", method = { RequestMethod.GET, RequestMethod.POST })
public void customized() {
}
@CrossOrigin("http://example.com")
@RequestMapping("/customOrigin")
public void customOriginDefinedViaValueAttribute() {
}
}
@Controller
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册