当前位置: 移动技术网 > IT编程>开发语言>Java > Spring Boot设置支持跨域请求过程详解

Spring Boot设置支持跨域请求过程详解

2020年08月08日  | 移动技术网IT编程  | 我要评论

现代浏览器出于安全的考虑, http 请求时必须遵守同源策略,否则就是跨域的 http 请求,默认情况下是被禁止的,ip(域名)不同、或者端口不同、协议不同(比如 http、https)都会造成跨域问题。

一般前端的解决方案有:

  • ① 使用 jsonp 来支持跨域的请求,jsonp 实现跨域请求的原理简单的说,就是动态创建<script>标签,然后利用<script>的 src 不受同源策略约束来跨域获取数据。缺点是需要后端配合输出特定的返回信息。
  • ② 利用反应代理的机制来解决跨域的问题,前端请求的时候先将请求发送到同源地址的后端,通过后端请求转发来避免跨域的访问。

后来 html5 支持了 cors 协议。cors 是一个 w3c 标准,全称是”跨域资源共享”(cross-origin resource sharing),允许浏览器向跨源服务器,发出 xmlhttprequest 请求,从而克服了 ajax 只能同源使用的限制。它通过服务器增加一个特殊的 header[access-control-allow-origin]来告诉客户端跨域的限制,如果浏览器支持 cors、并且判断 origin 通过的话,就会允许 xmlhttprequest 发起跨域请求。

前端使用了 cors 协议,就需要后端设置支持非同源的请求,spring boot 设置支持非同源的请求有两种方式。

第一,配置 corsfilter。

@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);
  }
}

需要配置上述的一段代码。第二种方式稍微简单一些。

第二,在启动类上添加:

public class application extends webmvcconfigureradapter { 

  @override 
  public void addcorsmappings(corsregistry registry) { 

    registry.addmapping("/**") 
        .allowcredentials(true) 
        .allowedheaders("*") 
        .allowedorigins("*") 
        .allowedmethods("*"); 

  } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网