@CrossOrigin的使用
1.使用场景
前后端分离应用
:当前端应用和后端服务部署在不同的域或端口上时,前端应用尝试向后端服务发起请求时,可能会遇到同源策略的限制。这时,后端服务可以使用@CrossOrigin
注解来允许这些跨域请求。微服务架构
:在微服务架构中,不同的服务可能部署在不同的域或端口上。服务之间或前端应用与后端服务之间的通信可能需要跨域。API开放平台
:如果你正在开发一个API
开放平台,并希望允许第三方开发者从他们的应用中调用你的API
,那么你需要确保你的API
支持跨域请求。
2.用法
@CrossOrigin
可以标注在方法或类上。当标注在类上时,表示该类中的所有响应都支持跨域请求。当标注在方法上时,仅表示该方法的响应支持跨域请求。
3.示例
3.1 标注在方法上
java
@RestController
public class MyController {
@CrossOrigin(origins = "http://example.com")
@GetMapping("/myEndpoint")
public String myEndpoint() {
return "Hello, World!";
}
}
只有http://example.com
域的请求才能访问/myEndpoint
端点
3.2 标注在类上
java
@RestController
@CrossOrigin(origins = {"http://example.com", "http://anotherexample.com"})
public class MyController {
@GetMapping("/myEndpoint")
public String myEndpoint() {
return "Hello, World!";
}
// 该类中的其他方法也将支持来自http://example.com和http://anotherexample.com的跨域请求
}
MyControlle
r中的所有方法都允许来自http://example.com
和http://anotherexample.com
的跨域请求。
3.属性配置
@CrossOrigin
注解有多个属性,例如:
origins:
允许访问的源列表。
methods:
允许访问的HTTP方法(如GET, POST等)。
allowedHeaders:
允许携带的请求头。
maxAge:
预检请求的缓存时间。
allowCredentials:
是否允许发送凭证(如cookies, HTTP认证或客户端SSL证明)。