spring @crossorigin不适用于该应用程序

时间:2017-10-05 09:08:22

标签: java spring spring-mvc cors

我是春天的新手。在4.3.9版本上有一个现有的spring项目(Not maven,它是一个动态的web项目),这是一个很好的工作。我在项目中编写了一个新的@RestController,并尝试从不同的机器访问该控制器。它抛出了我的

XMLHttpRequest cannot load http://<URL>. No 'Access-Control-Allow-Origin' header is present on the requested 

这里只有两个可用于配置的文件。没有用于配置的XML文件。我很困惑在哪里完全为应用程序添加cors过滤器配置。我在AppInitializer类中添加了 addCorsMappings 。但它仍然没有用。

如果我添加@CrossOrigin(origins = "*", maxAge = 3600),它仅适用于控制器。我想要整个申请。

@CrossOrigin(origins = "*", maxAge = 3600) -> This works only controller lvel
@RestController
public class CTUController {
     // code
}

请建议我在哪里添加

AppConfig类

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "net.qdj.spring")
public class AppConfig{

}

AppInitializer

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected Class[] getRootConfigClasses() {
    return new Class[] { AppConfig.class };
}

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected Class[] getServletConfigClasses() {
    return null;
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

// Added for CORS -> Not working for application level
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**");
}

}

请在这方面给我建议

1 个答案:

答案 0 :(得分:0)

使用allowedOrigins。

registry.addMapping("/**").allowedOrigins("http://localhost:9000"); 

而不是:

registry.addMapping("/**");