Introduce 'value' alias for 'origin' in @CrossOrigin
Issue: SPR-11393
This commit is contained in:
parent
f0c0813011
commit
60eb9e9ca2
|
@ -22,6 +22,8 @@ import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
import org.springframework.core.annotation.AliasFor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks the annotated method or type as permitting cross origin requests.
|
* Marks the annotated method or type as permitting cross origin requests.
|
||||||
*
|
*
|
||||||
|
@ -37,13 +39,21 @@ import java.lang.annotation.Target;
|
||||||
@Documented
|
@Documented
|
||||||
public @interface CrossOrigin {
|
public @interface CrossOrigin {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Alias for {@link #origin}.
|
||||||
|
*/
|
||||||
|
@AliasFor(attribute = "origin")
|
||||||
|
String[] value() default { "*" };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of allowed origins.
|
* List of allowed origins.
|
||||||
* <p>These values are placed in the {@code Access-Control-Allow-Origin}
|
* <p>These values are placed in the {@code Access-Control-Allow-Origin}
|
||||||
* header of both the pre-flight response and the actual response.
|
* header of both the pre-flight response and the actual response.
|
||||||
* <p>Defaults to {@code "*"} which means that all origins are allowed.
|
* <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.
|
* 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
|
* <p>Defaults to {@code "*"} which means that all headers requested
|
||||||
* by the client are allowed.
|
* 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.
|
* 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;
|
package org.springframework.web.servlet.mvc.method.annotation;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
|
@ -128,7 +129,17 @@ public class CrossOriginTests {
|
||||||
assertArrayEquals(new String[]{"header1", "header2"}, config.getAllowedHeaders().toArray());
|
assertArrayEquals(new String[]{"header1", "header2"}, config.getAllowedHeaders().toArray());
|
||||||
assertArrayEquals(new String[]{"header3", "header4"}, config.getExposedHeaders().toArray());
|
assertArrayEquals(new String[]{"header3", "header4"}, config.getExposedHeaders().toArray());
|
||||||
assertEquals(new Long(123), config.getMaxAge());
|
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
|
@Test
|
||||||
|
@ -279,6 +290,11 @@ public class CrossOriginTests {
|
||||||
@RequestMapping(path = "/customized", method = { RequestMethod.GET, RequestMethod.POST })
|
@RequestMapping(path = "/customized", method = { RequestMethod.GET, RequestMethod.POST })
|
||||||
public void customized() {
|
public void customized() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CrossOrigin("http://example.com")
|
||||||
|
@RequestMapping("/customOrigin")
|
||||||
|
public void customOriginDefinedViaValueAttribute() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
|
Loading…
Reference in New Issue