同源策略

很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的,说到跨域,就不得不说说浏览器的同源策略。
同源策略是由Netscape提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能,现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指协议、域名以及端口要相同。同源策略是基于安全方面的考虑提出来的,这个策略本身没问题,但是我们在实际开发中,由于各种原因又经常有跨域的需求,传统的跨域方案是JSONP,JSONP虽然能解决跨域但是有一个很大的局限性,那就是只支持GET请求,不支持其他类型的请求,而今天我们说的CORS(跨域源资源共享)(CORS,Cross-origin resource sharing)是一个W3C标准,它是一份浏览器技术的规范,提供了Web服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略,这是JSONP模式的现代版。
在Spring框架中,对于CORS也提供了相应的解决方案,今天我们就来看看SpringBoot中如何实现CORS。

前端请求

    Welcome to nginx!

配置后端

/** * @author laughing * @date 2020/9/26 * @site https://www.lisen.org */@RestControllerpublic class CorsController {    /**     * 方法配置跨域     * @return String     */    @RequestMapping("/CrossOrigin")    public String crossOrigin(){        return "crossOrigin";    }}

打开前端页面,我们可以看一下,报错信息如下,也就是出现了跨域

通过CrossOrigin配置跨域

我们可以将@CrossOrigin注解到方法上,实现跨域请求,我们对后端方法改造如下:

/** * @author laughing * @date 2020/9/26 * @site https://www.lisen.org */@RestControllerpublic class CorsController {    /**     * 方法配置跨域     * @return String     */    @RequestMapping("/CrossOrigin")    @CrossOrigin(origins = "http://localhost:1234")    public String crossOrigin(){        return "crossOrigin";    }}

通过CorsFilter配置跨域

继续后端改造

  1. 修改yaml文件,增加跨域配置信息
#配置跨域cors:  allowedOrigin:    - http://localhost:1234  allowCredentials:    - true  allowMethods:    - GET    - POST    - PUT    - DELETE  maxAge:    7200  path:    /**
  1. 增加CrosFilter配置文件
package org.lisen.cors.config;import lombok.Getter;import lombok.Setter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springframework.web.filter.CorsFilter;import java.util.List;/** * 跨域配置 * * @author laughing * @date 2020/9/26 * @site https://www.lisen.org */@Configuration@ConfigurationProperties(prefix = "cors")@Getter@Setterpublic class CorsFilterConfig {    private boolean allowCredentials;    private List allowedOrigin;    private List allowMethods;    private long maxAge;    private String path;    /**     * 配置跨域     *     * @return CorsFilter     */    @Bean    public CorsFilter corsFilter() {        CorsConfiguration corsConfiguration = new CorsConfiguration();        this.allowedOrigin.forEach(corsConfiguration::addAllowedOrigin);        this.allowMethods.forEach(corsConfiguration::addAllowedMethod);        corsConfiguration.setAllowCredentials(this.allowCredentials);        corsConfiguration.setMaxAge(this.maxAge);        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();        urlBasedCorsConfigurationSource.registerCorsConfiguration(this.path, corsConfiguration);        return new CorsFilter(urlBasedCorsConfigurationSource);    }}
  1. 增加请求
/** * @author laughing * @date 2020/9/26 * @site https://www.lisen.org */@RestControllerpublic class CorsController {    /**     * 方法配置跨域     * @return String     */    @RequestMapping("/CrossOrigin")//    @CrossOrigin(origins = "http://localhost:1234")    public String crossOrigin(){        return "crossOrigin";    }}

再次请求,可以发现仍然能够正常访问

代码已上传到码云

下载代码

git clone https://gitee.com/lisen0629/lisen_org.git

使用

进入克隆的位置,执行命令进入对应工程
cd cors

spring boot antd pro 跨域_springboot配置跨域相关推荐

  1. Spring Boot 2.X 如何优雅的解决跨域问题?

    Spring Boot 2.X 如何优雅的解决跨域问题? 参考文章: (1)Spring Boot 2.X 如何优雅的解决跨域问题? (2)https://www.cnblogs.com/haha12 ...

  2. Spring Boot教程(一)注解配置与EhCache使用

    2019独角兽企业重金招聘Python工程师标准>>> 快速入门 首先,下载样例工程chapter3-2-2.本例通过spring-data-jpa实现了对User用户表的一些操作, ...

  3. Spring Boot 2.4 对多环境配置的支持更改

    在目前最新的Spring Boot 2.4版本中,对配置的加载机制做了较大的调整.相关的问题最近也被问的比较多,所以今天就花点时间,给大家讲讲Spring Boot 2.4的多环境配置较之前版本有哪些 ...

  4. Spring Boot(一) 自动装配--约定大于配置

    欢迎去我的个人博客--晓坞坐坐,里面有很多有趣的文章,不止是技术.www.lixiaodongisme.com 随着spring体系的发展,我们在开发时需要配置整合的东西也越来越多,在进行开发时,繁琐 ...

  5. Spring Boot 2.X + Shiro 优雅解决 session 跨域问题

    一.跨域问题 web 开发中跨域问题是一个老生常谈的问题,根本原因是浏览器基于安全原因考虑对非同源的脚本操作和 ajax 访问进行了限制,介绍的文章网上有很多,这里不做赘述. 二.解决方案 跨域问题有 ...

  6. Spring Boot中对CORS(Cross-Origin Resource Sharing 跨域资源共享)的支持

    1.概念 Cors(Cross-Origin Resourece Sharing)是由W3C制定的一种跨域资源共享技术标准,目的是为了解决前端的跨域请求. 2.实验步骤 SpringBoot中配置Co ...

  7. spring boot实现WebMvcConfigurer接口定制SpringMvc配置

    文章目录 自定义静态资源映射 addResourceHandlers() 拦截器 addInterceptors() 无业务逻辑页面跳转 addViewControllers() 合而为一 sprin ...

  8. java 跨域_springboot解决跨域CROS问题,用注解@CrossOrigin

    项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...

  9. Spring Boot 2.x基础教程:配置元数据的应用

    在使用Spring Boot开发应用的时候,你是否有发现这样的情况:自定义属性是有高量背景的,鼠标放上去,有一个Cannot resolve configuration property的配置警告. ...

  10. Spring Boot Profile使用详解及配置源码解析

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 二师兄 来源 | 程序新视界 在实践的过程中我 ...

最新文章

  1. OpenStack 虚拟机热迁移流程图
  2. hdu 1053 Entropy (哈夫曼树)
  3. 七、Java编码字符集和转义符介绍
  4. UVA12325Zombie's Treasure Chest 宝箱
  5. javascript类型系统——正则表达式RegExp类型
  6. PTA c语言 统计一行文本的单词个数
  7. mybatis mysql schema_学习Mybatis与mysql数据库的示例笔记
  8. 适合MySQL master/slave模式的JDBC driver: lbpool
  9. 2012考研英语--前辈的高分复习经验
  10. 硬盘格式化后想要数据恢复的详细步骤攻略
  11. 个人记账软件测试初学者,好用的个人记账软件
  12. 数据仓库(2)数仓、大数据与传统数据库的区别
  13. ESET NOD32最新单机、企业中、英文版 + 个人专有ID(90天使用期)申请方法
  14. 微信小程序开发工具编辑样式文件后模拟器不显示
  15. 【C语言】快速排序psort函数的用法及自主实现psort函数
  16. Unity UGUI坐标和世界坐标转化
  17. 详解VMware Workstation 12 安装虚拟机
  18. MATLAB矩阵生成
  19. 为什么西游记中要给孙悟空戴上紧箍儿?
  20. UE4 AndroidSDK配置

热门文章

  1. C# 将Word,Execl,PPT,Project, 文件转成PDF, 不依赖Office!!
  2. PHP使用Apache中的ab测试网站的压力性能及mpm介绍
  3. 微信小程序连接无法跳转/ can not navigate to tabBar page错误
  4. 自动布局之autoresizingMask
  5. iOS学习之单例模式
  6. matplotlib 设置标注方向,更改matplotlib中绘图的轴,标记和标签的颜色
  7. Spring Cloud Hystrix Dashboard仪表盘 和 Turbine集群监控 (学习总结)
  8. Jquery 网站保存信息提示消息实现,提示后自动消失
  9. 一张图理解kafka producer全貌
  10. 一个故事告诉你什么才是好的程序员