前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot中遇到跨域了怎么办???

SpringBoot中遇到跨域了怎么办???

作者头像
Java宝典
发布2021-01-14 14:50:40
3100
发布2021-01-14 14:50:40
举报

跨域是什么意思???

做开发的小伙伴多少会看过这个报错例子吧 下面我们就来说说跨域是什么

要了解跨域首先,我们需要了解一些前置知识:

一个URL的组成: 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 http://www.baidu.com:8080/

协议,子域名,主域名,端口号 四项组成部分中,有一项不同 ,不同的域之间互相访问资源,就是不同的域 就被称之为跨域。

随着前后端分离开发的越来越普及,会经常遇到跨域的问题

下面我们介绍几种通过springboot的配置来解决跨域问题:第一种:设置允许全局跨域请求

代码语言:javascript
复制
@Configuration
public class CorsConfig {
  private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1 允许任何域名使用
        corsConfiguration.addAllowedHeader("*"); // 2 允许任何头
        corsConfiguration.addAllowedMethod("*"); // 3 允许任何方法(post、get等)
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }
  

}

‍或者使用这种配置:

代码语言:javascript
复制
@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
          //放行哪些原始域
          config.addAllowedOrigin("*");
          //是否发送Cookie信息
          config.setAllowCredentials(true);
          //放行哪些原始域(请求方式)
          config.addAllowedMethod("*");
          //放行哪些原始域(头部信息)
          config.addAllowedHeader("*");
          //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
          config.addExposedHeader("content-type");

        //2.添加映射路径
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }
}

第二种:使用注解方式

代码语言:javascript
复制
@RequestMapping("/test")
@CrossOrigin("http://localhost:10000")
public Map<String,String> vv(){
    Map<String,String> hmap = new HashMap<String,String>();
    hmap.put("string","success");
    return hmap;
}

‍第三种:单独对某个方法设置响应头

代码语言:javascript
复制
@RequestMapping("/test")
@CrossOrigin("http://localhost:8080")
public Map<String,String> v(){
    Map<String,String> test = new HashMap<String,String>();
    test.put("test","success");
    return test;
}

通过上述方法即可将跨域问题解决掉 end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java宝典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 跨域是什么意思???
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档