我使用的是 Spring Boot v1.5.1,似乎我对 CORS 来源的限制不起作用。
我的 application.properties 文件有以下行(ref1 ref2)。
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}")
关于我做错了什么的任何想法?
请注意,我没有WebMvcConfigurerAdapter
像这篇文章那样使用。我真的需要扩展这个类来显式控制源吗?我认为@CrossOrigin
除了属性文件设置之外的注释将能够控制允许的来源(而不是必须以编程方式进行)。
CORS allowed-origins 设置不会导致服务器阻止请求。
并且因为服务器不会阻止请求,所以不会阻止您直接在浏览器中打开 URL。
同源策略是施加跨域限制的原因,同源策略仅适用于在 Web 浏览器中运行的 Web 应用程序中的前端 JavaScript,并使用 XHR 或 Fetch 或 jQuery
$.ajax(…)
或其他任何方式进行跨域请求。所以 CORS 不是导致服务器阻塞请求的方法。因此,它也不是阻止用户直接导航到 URL 的方法,也不是阻止任何非 Web 应用程序工具(如
curl
Postman 或其他任何工具)访问 URL 的方法。