我是春天的新手。在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
}
请建议我在哪里添加
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "net.qdj.spring")
public class AppConfig{
}
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("/**");
}
}
请在这方面给我建议
答案 0 :(得分:0)
使用allowedOrigins。
registry.addMapping("/**").allowedOrigins("http://localhost:9000");
而不是:
registry.addMapping("/**");