【Java】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怎么配置都会提示跨域问题
下面是跨域:

【Java】springboot配置跨域问题

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

回答

谢邀!

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

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后台配置很像。可以自行对比对比。

请参考如下配置,添加 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;

}

这是我写的一篇博客,相信你看了以后就可以解决你的问题:http://blog.csdn.net/lammonpe...

友爱的第一篇回答。好好看代码了

以上是 【Java】springboot配置跨域问题 的全部内容, 来源链接: utcz.com/a/86420.html

回到顶部