当前位置:   article > 正文

Springboot解决跨域问题的三种方式_springboot跨域注解

springboot跨域注解

第一种:添加@CrossOrigin注解

Controller层对应的方法上添加@CrossOrigin或者类上添加@CrossOrigin  

  1. @RestController
  2. @RequestMapping("index")
  3. public class IndexController {
  4. @GetMapping("/test")
  5. @CrossOrigin
  6. public String index() {
  7. return "hello world";
  8. }
  9. }

第二种:添加CORS过滤器

新建配置类CorsConfig,创建CorsFilter过滤器,允许跨域

  1. @Configuration
  2. public class CorsConfig {
  3. // 跨域请求处理
  4. @Bean
  5. public CorsFilter corsFilter() {
  6. CorsConfiguration config = new CorsConfiguration();
  7. //允许所有域名进行跨域调用
  8. config.addAllowedOrigin("*");
  9. //允许所有请求头
  10. config.addAllowedHeader("*");
  11. //允许所有方法
  12. config.addAllowedMethod("*");
  13. // 添加映射路径,我们拦截一切请求
  14. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  15. source.registerCorsConfiguration("/**", config);
  16. return new CorsFilter(source);
  17. }
  18. }

 第三种:实现WebMvcConfigurer,重写addCorsMappings方法

  1. @Configuration
  2. public class CorsConfig implements WebMvcConfigurer {
  3. // 跨域请求处理
  4. @Override
  5. public void addCorsMappings(CorsRegistry registry) {
  6. registry
  7. // 设置允许跨域的路径
  8. .addMapping("/**")
  9. // 设置允许跨域请求的域名
  10. .allowedOriginPatterns("*")
  11. // 是否允许证书
  12. .allowCredentials(true)
  13. // 设置允许的方法
  14. .allowedMethods("GET", "POST", "DELETE", "PUT")
  15. // 设置允许的header属性
  16. .allowedHeaders("*")
  17. // 跨域允许时间
  18. .maxAge(3600);
  19. }
  20. }

全局配置有可能出先跨域失败的情况,改为过滤器解决跨域问题之后就解决了,在此附上过滤器跨域代码:

  1. @Component
  2. public class CorsFilter implements Filter {
  3. //销毁时候调用的方法
  4. @Override
  5. public void destroy() {
  6. }
  7. @Override
  8. public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
  9. throws IOException, ServletException {
  10. HttpServletRequest request = (HttpServletRequest) req;
  11. HttpServletResponse response = (HttpServletResponse) res;
  12. response.setHeader("Access-Control-Allow-Origin", "*");
  13. response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
  14. response.setHeader("Access-Control-Max-Age", "3600");
  15. response.setHeader("Access-Control-Allow-Headers", "*");
  16. chain.doFilter(req, res);
  17. }
  18. //初始化调用的方法
  19. //当服务器 被启动的时候,调用
  20. @Override
  21. public void init(FilterConfig arg0) throws ServletException {
  22. }
  23. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/629097
推荐阅读
相关标签
  

闽ICP备14008679号