@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

如何在 Spring 3 中进行 @CrossOrigin 注释?

Spring @CrossOrigin 注解原理(转)