【问题标题】:spring @crossorigin not working for the applicationspring @crossorigin 不适用于该应用程序
【发布时间】:2018-03-16 20:16:09
【问题描述】:

我是春天的新手。在 4.3.9 版本上有一个现有的 spring 项目(不是 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("/**");
}

}

请在这方面给我建议

【问题讨论】:

    标签: java spring spring-mvc cors


    【解决方案1】:

    使用 allowedOrigins。

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

    而不是:

    registry.addMapping("/**");
    

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2021-09-17
      • 2021-11-04
      • 2022-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多