启用CORS On Spring访问MongoDB数据

时间:2016-03-30 09:09:20

标签: spring cors

我正在尝试使用Spring开发RestFul Web服务,该服务从mongoDB集合中获取数据并将其提供给客户端。要按照this guide on spring.io建立服务。一切顺利,我可以从mongoDB访问数据并搜索它的数据结构名称。 当我试图管理来自我的客户端的请求时,问题就开始了,我收到了相同域策略违规的经典错误。

  

请求时没有'Access-Control-Allow-Origin'标头   资源。

该项目非常简单,由这3个类组成:

Frames.java

@Id
private String Id;

private String frameName;
private ArrayList<String> frameElements;

public String getId() {
    return Id;
}

public String getFrameName() {
    return frameName;
}

public ArrayList<String> getFrameElements() {
    return frameElements;
}

FrameRestFulServiceApplication.java

@SpringBootApplication
public class FrameRestFulServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(FrameRestFulServiceApplication.class, args);
    }
}

FramesRepository.java

 @RepositoryRestResource(collectionResourceRel = "frames", path = "frames")
    public interface FramesRepository extends MongoRepository<Frames, String>{

    List<Frames> findByFrameNameLike(@Param("frameName") String frameName);
    List<Frames> findByFrameName(@Param("frameName") String frameName);

}

我尝试了文档See here中找到的不同方法,但没有结果......

2 个答案:

答案 0 :(得分:2)

类似的问题是Spring Data Rest and Cors

答案是如果你使用的是Spring Boot(支持Filter bean),它可能是这样的:

@Configuration
public class RestConfiguration {

    @Bean
    public CorsFilter corsFilter() {

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); // you USUALLY want this
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

答案 1 :(得分:0)

你试过添加这样的课吗?

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

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

它对我有用