带有 Spring Boot 的 CORS - 将 GET 请求限制到某些域
Posted
技术标签:
【中文标题】带有 Spring Boot 的 CORS - 将 GET 请求限制到某些域【英文标题】:CORS with Spring Boot - restrict GET requests to certain domains 【发布时间】:2019-04-17 22:10:53 【问题描述】:我正在使用 Spring Boot,并且希望仅限制来自某些域的 HTTP GET 请求。例如,我想只接受来自预定义域列表的请求(例如https://www.frontend.com、https://www.test-frontend.com)。我怎样才能实现这样的功能?
我预计会遇到 CORS 问题,但这些不适用于 GET 请求。有什么想法吗?
【问题讨论】:
您不能使用 CORS 配置来阻止来自非浏览器客户端的请求。请参阅***.com/questions/42708660/… 和***.com/questions/43432743/… 的答案 谢谢,这就是问题所在。 【参考方案1】:public void addCorsMappings(CorsRegistry registry)
registry.addMapping("/api/**")
.allowedOrigins("https://www.frontend.com", "https://www.test-frontend.com")
.allowedMethods("GET");
参考:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/cors.html
【讨论】:
【参考方案2】:首先.allowedMethods
用于允许方法,因此如果您不想允许"GET"
,则将所有其他方法放入但不要放入 GET 方法,如下所示:
.allowedMethods("PUT", "DELETE", "PATCH")
其次,您不能 CORS
by non-webapp
客户端,如 curl 或 Postman,任何非 Web 应用程序客户端。
【讨论】:
我有类似的配置。我使用的是 Postman,这就是问题所在。以上是关于带有 Spring Boot 的 CORS - 将 GET 请求限制到某些域的主要内容,如果未能解决你的问题,请参考以下文章
WebTestClient - 带有 Spring Boot 和 Webflux 的 CORS
在带有 Angular 的 Spring Boot 中启用了 Cors,但仍然出现 cors 错误
带有 spring-boot 和 angularjs 的 CORS 不起作用
Angular 2 + CORS + 带有 Spring Security 的 Spring Boot Rest Controller