Spring CORS 设置

Spring CORS settings

我正在尝试启用跨源 header 以便能够从任何地方访问该服务(仅限本地环境),但我做不到。

@Configuration
@RequiredArgsConstructor
public class CrossOriginConfig implements WebMvcConfigurer {
    private final SecurityConfiguration securityConfiguration;

    @Override
    public void addCorsMappings(CorsRegistry registry) { 
    registry.addMapping("*").allowedOrigins(securityConfiguration.getCrossOrginFilter());
    }
}

我通过 ajax 调用自定义了 index.html,但由于缺少 Allow-Cross-Origin header 而失败,它来自另一个来源。

简单 Spring Boot 2.0 控制器与 @RestController 注释和简单的 @GetMapping 一起使用。

我错过了什么?我应该包括什么以及在哪里?

您需要在控制器 class 或特定方法上添加以下注释:

@CrossOrigin

默认情况下,它允许所有来源,所有 headers,@RequestMapping 注释中指定的 HTTP 方法,并使用 30 分钟的 maxAge。

如果您只想允许 http://localhost:8080 发送 cross-origin 请求

@CrossOrigin(origins = "http://localhost:8080")

相应地替换主机和端口。

查看以下 Spring 文档以获取更多信息:

https://spring.io/guides/gs/rest-service-cors/

正如 Georg Wittberger 指出的那样,问题出在映射上。我使用了 * 通配符,这对路径不利。

而不是:registry.addMapping("*")

我用过这个:registry.addMapping("/**") 并且工作正常。