【问题标题】:@CrossOrigin not working Spring Boot. How can I fix It?@CrossOrigin 无法使用 Spring Boot。我该如何修复它?
【发布时间】:2020-10-24 09:23:45
【问题描述】:

我正在使用 Spring Boot 为我的 Vue 应用程序创建一个 REST Api。这是我的路由处理程序:

@RestController
public class RootController {

    @CrossOrigin
    @GetMapping("/")
    public String index() {
        return "Hello from server";
    }
}

每当我使用 axios 向我的 API 发出请求时,它都会回复:

我该如何解决这个问题?

【问题讨论】:

  • 在我的环境中,它运行成功。看来可能需要更详细的信息。

标签: java spring-boot cors


【解决方案1】:

基本上,您需要使用 @CrossOrigin 注释指定来源,这让 spring 应用程序知道允许哪些所有来源向那些其余 api 发出请求。 在您的情况下,假设您的客户端应用程序托管在端口 8080 上,您可以尝试用 @CrossOrigin(origins = "http://localhost:8080") 替换 @CrossOrigin。

另外,您可以尝试 @CrossOrigin(origins = "", allowedHeaders = "") ,这将允许每个来源和所有标题。

【讨论】:

    【解决方案2】:
    @CrossOrigin
    @RestController
    public class RootController {
    
        
        @GetMapping("/")
        public String index() {
            return "Hello from server";
        }
    }
    

    【讨论】:

      【解决方案3】:

      我强烈建议您访问此Spring.io article,它会深入了解您的要求!

      与此同时,您可以创建一个 @Bean 来为您的应用程序配置 CORS(考虑将代码转换为 Java 语法,我刚刚从我正在处理的一个 kotlin 项目中复制了它)

      @Bean
      fun corsFilter(): CorsWebFilter {
          val corsConfig = CorsConfiguration()
          corsConfig.allowedOrigins = Arrays.asList("*")
          corsConfig.maxAge = 8000L
          corsConfig.addAllowedMethod("PUT")
          corsConfig.addAllowedMethod("GET")
          corsConfig.addAllowedMethod("POST")
          corsConfig.addAllowedHeader("Origin")
          corsConfig.addAllowedHeader("Content-Type")
          corsConfig.addAllowedHeader("Accept")
      
          val source = UrlBasedCorsConfigurationSource()
          source.registerCorsConfiguration("/**", corsConfig)
      
          return CorsWebFilter(source)
      }
      

      【讨论】:

        猜你喜欢
        • 2016-01-20
        • 1970-01-01
        • 2020-07-19
        • 2021-09-17
        • 2020-02-28
        • 2016-09-27
        • 2019-12-16
        • 2019-06-09
        • 2022-10-07
        相关资源
        最近更新 更多