当前位置:   article > 正文

springboot如何解决跨域问题(4种方式)_springboot解决跨域

springboot解决跨域

目录

@CrossOrigin 

WebMvcConfigurer 

Filter

Nginx


@CrossOrigin 

方法上加@CrossOrigin注解即可

查看源码就显而易见了 

 但是在多模块 多控制器 多个方法下 会显得代码冗余 不推荐用它到项目的每一个地方

WebMvcConfigurer 

实现WebMvcConfigurer接口 重写addCorsMappings()方法即可

  1. @Configuration
  2. public class CORSWebMvcConfig implements WebMvcConfigurer {
  3. @Override
  4. public void addCorsMappings(CorsRegistry registry) {
  5. //添加映射路径
  6. registry.addMapping("/**")
  7. //是否发送Cookie
  8. .allowCredentials(true)
  9. //设置放行哪些原始域 SpringBoot2.4.4下低版本使用.allowedOrigins("*")
  10. .allowedOriginPatterns("*")
  11. //放行哪些请求方式
  12. .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"})
  13. //.allowedMethods("*") //或者放行全部
  14. //放行哪些原始请求头部信息
  15. .allowedHeaders("*")
  16. //暴露哪些原始请求头部信息
  17. .exposedHeaders("*");
  18. }

注意springboot的版本(2.2.4以下使用alloweOrigins() 以上使用allowedOrginPatterns())

Filter

不需要注册,直接使用springboot提供的 CrosFilter

import org.springframework.web.filter.CorsFilter;
  1. @Configuration
  2. public class CORSWebFilter {
  3. @Bean
  4. public CorsFilter corsFilter(){
  5. CorsConfiguration config = new CorsConfiguration();
  6. // 允许跨域的头部信息
  7. config.addAllowedHeader("*");
  8. // 允许跨域的方法
  9. config.addAllowedMethod("*");
  10. // 可访问的外部域
  11. config.addAllowedOrigin("*");
  12. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  13. source.registerCorsConfiguration("/**", config);
  14. CorsFilter corsFilter = new CorsFilter(source);
  15. return corsFilter;
  16. }

Nginx

指令

nginx.exe 启动nginx

nginx.exe -s stop 停止nginx

ngin -s reload 重启nginx

netstat -ano | findstr 80 产看是否被占用了

taskkill -pid xxx   如果是的就kill掉

在  location / {} 里面直接添加这段代码即可

  1. add_header Access-Control-Allow-Origin *;
  2. add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
  3. add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
  4. if ($request_method = 'OPTIONS') {
  5. return 204;
  6. }
  7. #进行反向代理
  8. proxy_pass http://localhost:[你的端口]/[方法路劲];

Nginx做跨域处理的好处就是完全不用在后端或者前端代码 更能体现架构上的分离

需要注意的是

  1. 你必须可以访问localhost:80 看到nginx默认的首页
  2. 修改好配置文件(nginx.conf)需要重启Nginx加载配置(nginx.exe -s reload即可)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/629189
推荐阅读
相关标签
  

闽ICP备14008679号