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 文档以获取更多信息:
正如 Georg Wittberger 指出的那样,问题出在映射上。我使用了 * 通配符,这对路径不利。
而不是:registry.addMapping("*")
我用过这个:registry.addMapping("/**") 并且工作正常。
我正在尝试启用跨源 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 文档以获取更多信息:
正如 Georg Wittberger 指出的那样,问题出在映射上。我使用了 * 通配符,这对路径不利。
而不是:registry.addMapping("*")
我用过这个:registry.addMapping("/**") 并且工作正常。