springboot 跨域处理示例代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 跨域处理示例代码相关的知识,希望对你有一定的参考价值。

springboot处理跨域请求代码

在前、后端开发分离场景下,前段通过接口获取后端的数据,不可避免的碰到CORS问题,这里主要讲述后端代码允许修改的方案,记录springboot处理跨域的代码示例。如果后端是第三方提供,一般处理方案有自己封装第三方接口和用nginx等反向代理服务,不在这里讲述。

拦截http的OPTIONS方法,不要传递到controller方法

public class MyFilter extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
            if (request.getMethod().equals("OPTIONS")) {
                return true;
            }
            //认证或其他业务代码
            return true;
        }
    }

跨域http头设置代码如下:

 @Configuration
  public class CorsConfig {
     @Bean
     public FilterRegistrationBean corsFilter() {
         UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
         CorsConfiguration config = new CorsConfiguration();
         // 打开支持GET、POST、HEAD方法开关
         config.applyPermitDefaultValues();
         // true,接受浏览器cookie;false,不接受cookie
         config.setAllowCredentials(false);
         // 允许的域名
         config.setAllowedOrigins(Arrays.asList(allowedOrigin.split(",")));
         // 允许的额外消息头(默认:Cache-Control, Content-Language, Expires, Last-Modified, or Pragma. ),此处token为自定义头
         config.setAllowedHeaders(Arrays.asList("token", "Content-Type"));
          // 允许的方法
         config.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS"));
         // 客户端可以拿到的额外消息头(默认:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma)
         config.setExposedHeaders(Arrays.asList("token", "content-disposition"));
         // Access-Control-Max-Age Header
         source.registerCorsConfiguration("/**", config);
         FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
         bean.setOrder(0);
         return bean;
  }
}

以上是关于springboot 跨域处理示例代码的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot:处理跨域请求

处理屏幕旋转上的片段重复(带有示例代码)

Springboot vue.js html 跨域 前后分离 shiro权限 集成代码生成器

Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限

SpringBoot(十七)_springboot跨域处理

springboot如何解决跨域问题?