【Java】springboot配置跨域问题
问题:
在springboot中配置了全局cors无效
这是cors配置类
@Configurationpublic class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
下面是controller
@RestControllerpublic 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怎么配置都会提示跨域问题
下面是跨域:
求解惑 这是为什么。根据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框架的),参考:
最后,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