尽管有以下配置,访问http://localhost:8080/rooms/rooms.json给了我一个CORS错误 - 没有“访问控制允许来源”标头出现在所请求的资源。
我没有问题,要求其由控制器映射其他任何路径。什么是静态资源的问题?如何让CORS请求或排除的资源路径不带弹簧的安全性?
春天引导2.0.5
春季启动网络入门2.0.5
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/rooms/**")
.addResourceLocations("classpath:/rooms/")
.setCachePeriod(3600)
.resourceChain(true)
.addResolver(new PathResourceResolver());
}
@Override
public void addCorsMappings(final CorsRegistry registry) {
registry.addMapping("/**");
}
}
@CrossOrigin(value = "*")
添加到您的控制器类。你可以与任何特定的URL替换*的情况下,允许该原点而已。
@CrossOrigin(origins = "http://localhost")
@GetMapping("/rooms/")
public Object rooms() {
// your implementation
}
你可以这样做。
更新addCorsMappings
像下面它可以工作
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/rooms/**")
.addResourceLocations("classpath:/rooms/")
.setCachePeriod(3600)
.resourceChain(true)
.addResolver(new PathResourceResolver());
}
@Override
public void addCorsMappings(final CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("POST", "GET")
//.allowedHeaders("header1", "header2", "header3")
//.exposedHeaders("header1", "header2")
.allowCredentials(true).maxAge(3600);
}
}