@CrossOrigin 不适用于 spring-boot-starter-web 2.5.2
Posted
技术标签:
【中文标题】@CrossOrigin 不适用于 spring-boot-starter-web 2.5.2【英文标题】:@CrossOrigin not working for spring-boot-starter-web 2.5.2 【发布时间】:2021-09-17 21:47:46 【问题描述】:我有 Spring Boot 休息控制器,它公开了我想在 Angular 12 中使用的某些 API。 在控制器上,我添加了@CrossOrigin,但 spring-boot 似乎没有接收到它,因为即使添加了注释,我也遇到了 Cors 策略问题。
@CrossOrigin(origins = "*")
@RestController
@Scope(WebApplicationContext.SCOPE_REQUEST)
@RequestMapping("api/rest")
public class MyController
cors error
【问题讨论】:
【参考方案1】:我认为您已经为特定控制器启用了跨域功能。您可以通过在其他控制器上添加@CrossOrigin(origins = "*")
来启用相同功能或您可以通过如下创建 bean 来全局配置跨域
@Bean
public WebMvcConfigurer corsConfigurer()
return new WebMvcConfigurer()
@Override
public void addCorsMappings(CorsRegistry registry)
registry.addMapping("/**").allowedOrigins("*");
;
【讨论】:
【参考方案2】:您是否尝试将其添加为@CrossOrigin(origins = "http://localhost:<your_port>")
your_port
是您的 Angular 应用使用的端口?
【讨论】:
【参考方案3】:试试下面的代码:
@CrossOrigin(allowCredentials = "true")
【讨论】:
【参考方案4】:如果您从浏览器发送请求,请向浏览器添加 CORS-Origin 扩展。如果@CrossOrigin 不起作用,那么这就是你的问题。给你:
https://chrome.google.com/webstore/detail/cors-unblock/lfhmikememgdcahcdlaciloancbhjino
【讨论】:
以上是关于@CrossOrigin 不适用于 spring-boot-starter-web 2.5.2的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot CORS 过滤器不适用于 AngularJS
@CrossOrigin(origins = "*" ) 不适用于 Springboot + React 应用程序
@CrossOrigin Annotation 适用于 Rest Controller 的一种方法,但不适用于第二种方法[关闭]
Spring 的 ApplicationListener<AuthenticationSuccessEvent> 打破了@CrossOrigin