SpringBoot服务器端解决跨域问题

 更新时间:2020年11月10日 10:37:25   作者:DayRain  
这篇文章主要介绍了SpringBoot服务器端解决跨域问题,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下

本文导航

SpringBoot解决跨域问题的两种方案:

1、通过给方法或者类加注解的形式,@CrossOrigin。

2、继承接口,重写addCorsMappings方法。

第一种方式:

@RestController
@CrossOrigin("http://localhost:8081")
public class BaseController {

 @GetMapping("/hello")
 public String testGet(){

  return "get";
 }

 @PutMapping("/doPut")
 public String testPut(){
  return "put";
 }
}

指定请求来源,可以写成“*”,表示接收所有来源的请求。

第二种方式:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

 @Override
 public void addCorsMappings(CorsRegistry registry) {
  registry.addMapping("/**").allowedOrigins("http://localhost:8081")
    .allowedHeaders("*")
    .allowedMethods("*")
    .maxAge(30*1000);
 }
}

allowOrigins也可以写成allowedOrigins(" * "),表示接收所有来源的请求。

注意点:

1、路径来源的写法问题

如果后台指定路径来源为:http://localhost:8081

那么在浏览器里访问前端页面的时候,必须用 http://localhost:8081,不可以写成127.0.0.1或者本机ip地址。否则还是会报跨域错误。测试如下

后台设置:

 @Override
 public void addCorsMappings(CorsRegistry registry) {
  registry.addMapping("/**").allowedOrigins("http://localhost:8081")
    .allowedHeaders("*")
    .allowedMethods("*")
    .maxAge(30*1000);
 }

前端请求:

<script>
    doGet = function () {
        $.get('http://localhost:8080/hello', function (msg) {
            $("#app").html(msg);
        });
    }
 
    doPut = function () {
        $.ajax({
            type:'put',
            url:'http://localhost:8080/doPut',
            success:function (msg) {
                $("#app").html(msg);
            }
        })
    }
</script>

启动服务,浏览器里访问:

http://localhost:8081/index.html

正常返回结果

浏览器里访问:

http://127.0.0.1:8081/index.html

报跨域错误如下:

所以说,浏览器访问路径需要与后台allowOrigin里设置的参数一致。

那如果代码里的访问路径可以不一样吗,比如:

 doGet = function () {
  $.get('http://127.0.0.1:8080/hello', function (msg) { //本机ip地址
   $("#app").html(msg);
  });
 }

 doPut = function () {
  $.ajax({
   type:'put',
   url:'http://192.168.1.26:8080/doPut',
   success:function (msg) {
    $("#app").html(msg);
   }
  })
 }

经过测试,是可以的,只要浏览器里访问页面的路径写法与后台保持一致就可以了。

2、携带Cookie

有时候,前端调用后端接口的时候,必须要携带cookie(比如后端用session认证),这个时候,就不能简单的使用allowOrigins("*")了,必须要指定具体的ip地址,否则也会报错。

以上就是SpringBoot服务器端解决跨域问题的详细内容,更多关于SpringBoot 解决跨域的资料请关注脚本之家其它相关文章!

相关文章

  • JavaSE的三大接口:Comparator,Comparable和Cloneable详解

    JavaSE的三大接口:Comparator,Comparable和Cloneable详解

    这篇文章主要介绍了详解JavaSE中Comparator,Comparable和Cloneable接口的区别的相关资料,希望通过本文大家能彻底掌握这部分内容,需要的朋友可以参考下
    2021-10-10
  • CompletableFuture 异步编排示例详解

    CompletableFuture 异步编排示例详解

    这篇文章主要为大家介绍了CompletableFuture 异步编排示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • php上传文件分类实例代码

    php上传文件分类实例代码

    这篇文章主要介绍了php上传文件分类实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • JavaWeb仓库管理系统详解

    JavaWeb仓库管理系统详解

    这篇文章主要为大家详细介绍了JavaWeb仓库管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Springmvc文件上传实现流程解析

    Springmvc文件上传实现流程解析

    这篇文章主要介绍了Springmvc文件上传实现流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java String字符串补0或空格的实现代码

    Java String字符串补0或空格的实现代码

    这篇文章主要介绍了Java String字符串补0或空格的实现代码,代码简单易懂,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • SpringBoot整个启动过程的分析

    SpringBoot整个启动过程的分析

    今天小编就为大家分享一篇关于SpringBoot整个启动过程的分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java基础之自动装箱,注解操作示例

    Java基础之自动装箱,注解操作示例

    这篇文章主要介绍了Java基础之自动装箱,注解操作,结合实例形式分析了java拆箱、装箱、静态导入、注释等相关使用技巧,需要的朋友可以参考下
    2019-08-08
  • Java GUI进阶之流式布局管理器FlowLayout专项精讲

    Java GUI进阶之流式布局管理器FlowLayout专项精讲

    FlowLayout-流式布局管理器,按水平方向依次排列放置组件,排满一行,换下一行继续排列。排列方向(左到右 或 右到左)取决于容器的componentOrientation属性
    2022-04-04
  • 详解SSM框架下结合log4j、slf4j打印日志

    详解SSM框架下结合log4j、slf4j打印日志

    本篇文章主要介绍了详解SSM框架下结合log4j、slf4j打印日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论