欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springboot跨域处理

程序员文章站 2024-01-31 23:51:40
一、什么是跨域(CORS) 跨域(CORS)是指不同域名之间的互相访问,本地服务器去访问另一个服务器的资源,这个时候就会出现跨域访问的问题,是由浏览器对于JavaScript所定义的安全限制策 同域: - 同一协议, 如http或https - 同一IP地址, 如192.168.1.2 - 同一端口 ......

一、什么是跨域(cors)

  跨域(cors)是指不同域名之间的互相访问,本地服务器去访问另一个服务器的资源,这个时候就会出现跨域访问的问题,是由浏览器对于javascript所定义的安全限制策

  同域: 
    - 同一协议, 如http或https 
    - 同一ip地址, 如192.168.1.2 
    - 同一端口, 如8080 
    以上三个条件中有一个条件不同就会产生 跨域问题

二、跨域解决方案

  1.前端解决方案

    1.1 使用 jsonp 来支持跨域的请求

    1.2 使用nodejs服务器做为服务代理

  2.后端解决方案

   这里有三种配置方式

   2.1 配置过滤器

@configuration
public class globalcorsconfig {
@bean
public corsfilter corsfilter() {
  corsconfiguration config = new corsconfiguration();
  config.addallowedorigin("*");
  config.setallowcredentials(true);
  config.addallowedmethod("*");
  config.addallowedheader("*");
  config.addexposedheader("*");

  urlbasedcorsconfigurationsource configsource = new urlbasedcorsconfigurationsource();
  configsource.registercorsconfiguration("/**", config);

  return new corsfilter(configsource);
  }
}
2.2 配置拦截器

@configuration
public class myconfiguration extends webmvcconfigureradapter {

@override
public void addcorsmappings(corsregistry registry) {
  registry.addmapping("/**")

  .allowedmethods(httpmethod.get.name(),httpmethod.post.name(),httpmethod.put.name(),httpmethod.patch.name(),httpmethod.delete.name())//允许访问的类型
  .allowcredentials(true)
  .allowedheaders("*")
  .allowedorigins("*")
  .maxage(3600);

  }
}
2.3单个请求跨域请求

@requestmapping("/hello")

@crossorigin("http://localhost:8080")

public string hello( ){

   return "hello world";

}

另:本人刚开始写博客,小白,想用博客记录问题点,欢迎大佬们评论不足的地方,多交流