SpringBoot跨域Jsonp和Cors的方法

 更新时间:2019年08月29日 11:32:35   作者:994🍔  
这篇文章主要介绍了SpringBoot跨域Jsonp和Cors的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

有一次我的项目中采用了前后端分离的模式,引起了跨域问题,本文将介绍我所采用的跨域解决方法。

首先要了解产生跨域的本质,也就是同源策略的限制,源是指域名、端口号、协议,有一者不相同将被浏览器拒绝接受响应信息,(请求可以发送出去,但是浏览器不接受响应)。

解决方法:

1. jsonp

jsonp的原理的 src="" 属性不受同源策略的限制,动态创建一个callback回调函数,服务器调用回调函数把数据放进去,具体的细节打算以后做一个专门讲解。

这里给一个模版:

$.ajax({
     type: "get",        //jsonp只能使用get
     async: false,
     url: ""
     dataType: "jsonp",
     jsonp: "callback",    
     jsonpCallback:"message",    //注意这里给回调函数起的名字
       success: function(json){
       
      }
    })

如果这里你的回调函数起名为message,那么你在后端返回json的时候,也要注意在最外面包一层message{}。

这里jsonp的确定也可以明显的看出,只支持get请求,原因就是因为通过src=“”发送请求,所以可以知道是url传参。

那么jsonp的好处是什么呢,兼容性,几乎所有浏览器都支持(包括一些版本比较老的),不需要XMLHttpRequest或ActiveX的支持。

2. cors

又称跨域访问,浏览器将cors请求分为简单请求和非简单请求,因为本文主要讲解具体的方法,所以关于细节部分有兴趣可以去看其他博客或者我以后再做一篇具体的讲解(和jsonp一起)。在springboot中,官方已经提供了支持。直接贴代码:

方式一:全局定义

@Configuration
public class CorsConfig implements WebMvcConfigurer {
  private CorsConfiguration buildConfig() {
    CorsConfiguration corsConfiguration = new CorsConfiguration();
    List<String> list = new ArrayList<>();
    list.add("*");
    corsConfiguration.setAllowedOrigins(list);
    /*
    // 请求常用的三种配置,*代表允许所有,当时你也可以自定义属性
    (比如header只能带什么,只能是post方式等等)
    */
    corsConfiguration.addAllowedOrigin("*");  //支持的源
    corsConfiguration.addAllowedHeader("*");  //header限制
    corsConfiguration.addAllowedMethod("*");  //支持方法
    return corsConfiguration;
  }
  @Bean
  public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source
      = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", buildConfig());
    return new CorsFilter(source);
  }
}

方式二:局部定义

@CrossOrigin(origins = "*",allowCredentials="true",allowedHeaders = "",methods = {})

直接在需要跨域的方法上添加注解,不过我没试过,有兴趣或者有这种方式需求的朋友可以尝试一下。

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

相关文章

  • springboot远程执行服务器指令

    springboot远程执行服务器指令

    这篇文章主要介绍了springboot远程执行服务器指令,本例是java远程连接到服务器,去抓取查询kubesphere中的etcd日志,并返回,需要的朋友可以参考下
    2023-09-09
  • SpringBoot中并发定时任务的实现、动态定时任务的实现(看这一篇就够了)推荐

    SpringBoot中并发定时任务的实现、动态定时任务的实现(看这一篇就够了)推荐

    这篇文章主要介绍了SpringBoot并发定时任务动态定时任务实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Spring实现类私有方法的几个问题(亲测通用解决方案)

    Spring实现类私有方法的几个问题(亲测通用解决方案)

    现实的业务场景中,可能需要对Spring的实现类的私有方法进行测试。本文给大家分享Spring实现类私有方法面临的几个问题及解决方案,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • Java List的remove()方法陷阱以及性能优化

    Java List的remove()方法陷阱以及性能优化

    Java List在进行remove()方法是通常容易踩坑,本文就详细的介绍一下陷阱以及性能优化,感兴趣的可以了解一下
    2021-10-10
  • Java性能调优及排查方式

    Java性能调优及排查方式

    这篇文章主要介绍了Java性能调优及排查方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 详解Java中的内存屏障

    详解Java中的内存屏障

    这篇文章主要介绍了Java中的内存屏障的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-05-05
  • Java多线程实现FTP批量上传文件

    Java多线程实现FTP批量上传文件

    这篇文章主要为大家详细介绍了Java多线程实现FTP批量上传文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 浅谈JVM核心之JVM运行和类加载

    浅谈JVM核心之JVM运行和类加载

    本篇文章主要介绍了JVM核心之JVM运行和类加载,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • SpringSecurity中的表单认证详细解析

    SpringSecurity中的表单认证详细解析

    这篇文章主要介绍了SpringSecurity中的表单认证详细解析,在上一篇文章中,我们初步引入了 Spring Security,并使用其默认生效的 HTTP 基本认证保护 URL 资源,在本篇文章中我们使用表单认证来保护 URL 资源,需要的朋友可以参考下
    2023-12-12
  • Java获取彩色图像中的主色彩的实例代码

    Java获取彩色图像中的主色彩的实例代码

    这篇文章主要介绍了Java获取彩色图像中的主色彩的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论