报错原因:
基于springboot
解决方式1:
配置跨域过滤器
/**
* 全局配置
*
* @author fmin
* @date 2020-01-10 17:37
*/
@Configuration
public class ContextConfig {
/**
* 跨域过滤器
*/
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
}
解决方式2:
使用HttpServletResponse 设置响应头:
@Override
public void downLoadByCad(String bucketName, String objectName, HttpServletResponse httpServletResponse, HttpServletRequest httpServletRequest) {
// 创建ObsClient实例
// 桶名获取 endpoint
String endPoint = fileService.getBucketByName(bucketName, endPointHead, endPointEnd);
httpServletResponse.setHeader("Access-Control-Allow-Origin","*");
httpServletResponse.setHeader("Access-Control-Allow-Methods","POST,GET,PUT,OPTIONS");
httpServletResponse.setHeader("Access-Control-Max-Age","3600");
httpServletResponse.setHeader("Access-Control-Allow-Headers","x-requested-with");
}
解决方式3:
使用@CrossOrigin 注解:
注: SpringMvc 需要4.2以上
@Override
@CrossOrigin(methods = RequestMethod.GET)
public void downLoadByCad(String bucketName, String objectName) {
}