@CrossOrigin
是Spring框架中的一个注解,用于处理跨域资源共享(Cross-Origin Resource Sharing, CORS)问题。在Web应用开发中,出于安全原因,浏览器实施了同源策略(Same-origin policy),这一策略限制了从一个源加载的Web页面脚本与来自不同源的资源交互。这意味着,如果尝试从一个域名(例如,example.com
)的网页通过JavaScript向另一个域名(如api.example.com
)发送AJAX请求,浏览器会阻止这个请求,除非服务器端明确允许此类跨域请求。
@CrossOrigin
注解的作用就是告诉服务器端应该允许来自不同源的请求。当你在一个控制器类或具体处理方法上使用此注解时,Spring会自动在HTTP响应头中添加适当的CORS相关头部信息,如Access-Control-Allow-Origin
、Access-Control-Allow-Methods
、Access-Control-Allow-Headers
等,从而允许浏览器执行跨域请求。
例如,以下是一个使用@CrossOrigin
的简单示例:
1import org.springframework.web.bind.annotation.CrossOrigin;
2import org.springframework.web.bind.annotation.GetMapping;
3import org.springframework.web.bind.annotation.RestController;
4
5@CrossOrigin(origins = "http://example.com", maxAge = 3600)
6@RestController
7public class MyController {
8
9 @GetMapping("/api/data")
10 public String getData() {
11 // 处理请求并返回数据
12 return "Some data";
13 }
14}
在这个例子中,@CrossOrigin(origins = "http://example.com", maxAge = 3600)
注解应用到整个MyController
控制器类上,意味着所有该控制器中的API都将允许来自http://example.com
的跨域请求,并且这个允许规则的有效期为1小时(maxAge = 3600
秒)。你也可以在具体的方法上使用@CrossOrigin
来精细化控制跨域策略。