【发布时间】:2017-07-31 05:22:54
【问题描述】:
我使用的是 Spring Boot v1.5.1,看来我对 CORS 来源的限制不起作用。
我的 application.properties 文件包含以下行 (ref1ref2)。
endpoints.cors.allowed-origins=http://mydomain.io
我的 REST 控制器如下所示。
@RestController
@CrossOrigin
@RequestMapping("/api/car")
public class CarCtrl {
@Autowired
private CarService carService;
@GetMapping
public Car get() {
return carService.getLatest();
}
}
但是,当我打开浏览器并输入 http://localhost:8080/api/car 时,我仍然能够访问 REST 端点。
我也尝试如下更改我的注释,但这不起作用。
@CrossOrigin("${endpoints.cors.allowed-origins}")
关于我做错了什么有什么想法吗?
请注意,我没有像 post 这样使用 WebMvcConfigurerAdapter。我真的需要扩展这个类来显式控制原点吗?我认为除了属性文件设置之外,@CrossOrigin 注释将能够控制允许的来源(而不是必须以编程方式这样做)。
【问题讨论】:
-
Cors 在执行 ajax 请求时应用。它不会阻止浏览器直接访问 API url。
WebMvcConfigurerAdapter用于要应用全局 Cors 策略时,@CrossOrigin对于单个资源应该足够了。为什么你认为它不起作用?你是怎么检查的?
标签: java spring spring-mvc spring-boot cors