springboot配置跨域问题

问题:
在springboot中配置了全局cors无效
这是cors配置类

@Configuration
public class CorsConfig {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**");
            }
        };
    }
}

下面是controller

@RestController
public class Demo {

    @RequestMapping("/hello")
    public ResponseEntity hello(@RequestParam String hello) {
        return ResponseEntity.ok(hello);
    }
}

下面是webstorm中测试的ajax请求:

    function aa() {
        $.post('localhost:8080/hello', { hello: 'dd' }, function (data) {
            console.log(data)
        })
    }

每次刷新页面执行这个方法,不管sprigboot怎么配置都会提示跨域问题
下面是跨域:

clipboard.png

求解惑 这是为什么。根据springboot官网的cors的配置但是没用。

阅读 4.8k
评论 更新于 2017-12-30
    3 个回答

    谢邀!

    首先,题主贴出的错误提示是这样的:

    Cross origin requests are only supported for protocol schemes: http, data, chrome, https...

    很明显,这仅是提示你protocol错误而已,请用http://开头的路径(protocol采用http协议)-因为你这个看起来像是http协议头没有被补齐。

    请注意,题主你测试的路径是localhost:8080/hello,可以换成http://localhost:8080/hello试试。

    另外,虽然我已经很久没有写Java后台了,也没用过springboot,但是我以前整理过其它类型的跨域配置(如spring mvc框架的),参考:

    ajax跨域,这应该是最全的解决方案了

    最后,CORS只是一个跨域资源共享方案而已,正常来说,按照上面的文档配置,应该就行了。

    补充一句,springboot的配置看起来和上文中的Node-express后台配置很像。可以自行对比对比。

    评论 赞赏 2017-12-30

      请参考如下配置,添加 CorsFilter

          @Bean
          public CorsFilter corsFilter() {
              UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
              source.registerCorsConfiguration("/**", buildConfig());
              return new CorsFilter(source);
          }
      
          private CorsConfiguration buildConfig() {
              CorsConfiguration corsConfiguration = new CorsConfiguration();
              corsConfiguration.addAllowedOrigin("*");
              corsConfiguration.addAllowedHeader("*");
              corsConfiguration.addAllowedMethod("*");
              return corsConfiguration;
          }
      评论 赞赏 2017-12-30
        Lemon
        • 116
        评论 赞赏 2017-12-30
          撰写回答

          登录后参与交流、获取后续更新提醒