1、概念

Cors(Cross-Origin Resourece Sharing)是由W3C制定的一种跨域资源共享技术标准,目的是为了解决前端的跨域请求。

2、实验步骤

SpringBoot中配置Cors的步骤如下:

2.1 创建第一个Spring Boot工程(切记:本实验中,第一个工程的tomcat的接口为8086)。本实验中添加Web依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.2 创建控制器,同时添加跨域配置(这是方式①,方式②在下文。 )

在新建的SpringBoot工程中,添加一个控制器(名字随意),这里以FilmControler举例:代码如下

/*** @author * @Description: 配置跨域,跨域可以在两个地方进行配置。①直接在方法进行配置。②采用全局配置* @Date:2019/7/31 14:04*/
@RestController
@RequestMapping("/film")
@Slf4j
public class FilmController {@PostMapping("/")//@CrossOrigin实现跨域注解。value表示支持的域;maxAge表示探测请求的有效期,1800表示30分钟,    探测请求不用每次都发送,// 只有过了有效期之后才会再次发送探测请求。//allowedHeaders表示允许的请求头,*表示所有的请求头都被允许。//origin="*"代表所有域名都可访问@CrossOrigin(value = "http://localhost:8081",maxAge = 1800, allowedHeaders = "*")public String addFilm(String name) {log.info("name" + name);return "receive" + name;}@DeleteMapping("/{id}")@CrossOrigin(value = "http://localhost:8081",maxAge = 1800, allowedHeaders = "*")public String deleteFilmById(@PathVariable Long id) {log.info("启用删除");return String.valueOf(id);}@GetMapping("/add")public String add() {return "hello";}
}

注:以上配置是一种细粒度的配置,可以控制在每一个方法上。当然,也可以不在每个方法上添加@CrossOrigin注解,而是通过编写配置类来进行一种全局配置,代码如下:

public class MyWebMvcConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {//addMapping表示对哪种格式的请求路径进行跨域处理;registry.addMapping("/film/**").allowedHeaders("*").allowedMethods("*").maxAge(1800).allowedOrigins("http://localhost:8086");}
}

强调:以上两种方式,选择其一即可。

2.3 测试

建立第二个Spring Boot项目(第二个工程的Tomcat接口为8081),添加Web依赖,然后再resources/static目录下加入jquery.js,再在resources/static目录下创建一个index.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title><!--对jquery进行引用 --><script src="jquery-3.3.1.min.js"></script>
</head>
<body><div id="contentDiv"></div><div id="deleteResult"></div><input type="button" value="提交数据" onclick="getData()"><br><input type="button" value="删除数据" onclick="deleteData()"><br><script>function deleteData() {alert("deleteData")$.ajax({url:'http://localhost:8086/film/99',type:'delete',success:function (msg) {$("#deleteResult").html(msg);}})}function getData() {$.ajax({url:'http://localhost:8086/film/',type:'post',data:{name:'银河补习班'},success:function (msg) {$("#contentDiv").html(msg);}})alert("Hello,getData")}</script>
</body>
</html>

上述index.html表明了两个普通的Ajax都发送了一个跨域请求。

将项目端口修改为8081.

启动第二个项目,访问地址“http://localhost:8081/index.html”,查看页面,并分别点击两个按钮,结果如下所示:

Spring Boot中对CORS(Cross-Origin Resource Sharing 跨域资源共享)的支持相关推荐

  1. CORS(Cross-Origin Resource Sharing)跨域资源共享

    CORS(Cross-Origin Resource Sharing)跨域资源共享 由于浏览器同源策略的影响,跨域问题在我们日常开发中经常遇到,此前有一系列的跨域问题的解决方案,如JSONP.flas ...

  2. CORS(Cross-Origin Resource Sharing) 跨域资源共享

    CORS 全称:Cross-Origin Resource Sharing 中文意思:跨域资源共享? 好吧,目前中文方面的资料还比较少,能搜索到的那仅有的几篇相关介绍,也几乎是雷同的. 最近工作上也有 ...

  3. tomcat7.0配置CORS(跨域资源共享)

    平时我们做前台页面时可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...

  4. php跨域资源共享,CORS 跨域资源共享

    CORS (Cross-Origin Resource Sharing) 跨域资源共享 为什么需要 CORS 首先,跨域指的是同一个域名下的资源,同时要注意域名与子域名,比如 developers.e ...

  5. Cross-Origin Resource Sharing[1] 跨域资源共享

    Cross-Origin Resource Sharing [1] 跨域资源共享. 中文名 跨域资源共享 外文名 Cross Origin Resource Sharing CORS是一种允许当前域( ...

  6. cors跨域_Spring Boot 中通过 CORS 解决跨域问题

    (给ImportNew加星标,提高Java技能) 转自:江南一点雨 今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的, ...

  7. Spring Boot CORS跨域资源共享实现方案

    同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能 同源策略限制cookie 等信息的跨源网页读取,可以保护本地用户信息 同源策略限制跨域 aja ...

  8. Spring Boot 中三种跨域场景总结

    文章目录 1.什么是跨域 2.解决方案 2.1 存在的问题 3.SpringSecurity 3.1 方式一 3.2 方式二 4.OAuth2 5.小结 跨域这个问题松哥之前写过文章,但是最近收到小伙 ...

  9. Maven中的profile和spring boot中的profile进行结合

    2019独角兽企业重金招聘Python工程师标准>>> 有一些应用,采用了spring boot和spring boot profile.然后想把maven 中的profile和sp ...

最新文章

  1. (自已看的东西)java通过get和post直接提交
  2. Angular中的路由配置、路由重定向、默认选中路由
  3. angular 示例项目
  4. 设计模式建议学习顺序
  5. 设计模式学习之--Singleton(单例)模式
  6. jquery获取json对象中的key小技巧
  7. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_03.jdbc操作数据库的问题分析
  8. TestFlight测试步骤
  9. 用c加加创建c语言项目,如何使用visual studio 2017创建C语言项目
  10. 洛谷B2099 矩阵交换行(swap函数)
  11. 【Python小工具】若干图片合并生成动态图(.gif)
  12. 字符串中查找IP地址的正则表达式
  13. 手机抓取蓝牙日志btsnoop的方法汇总(Android一直补充中)
  14. DouPHP模块化企业网站管理系统源码 v1.6
  15. 华研c语言从入门到精通,2020考研答案_ 2018年12月英语六级答案【三套全】(华研外语版)_沪江英语...
  16. node中使用es6语法
  17. 神鬼传奇客户端-终极优化精简方法
  18. 函数 函数的基本使用 函数的四种基本形式 可选参数 函数默认参数 函数的剩余参数 构造函数() 函数重(chong)载
  19. 创建python虚拟环境,安装Django
  20. amd和arm安装ffmpeg踩坑报错处理

热门文章

  1. Java 获取文件大小
  2. Jenkins构建触发器定时Poll SCM、Build periodically
  3. 分享10个常见互联网词汇!!!
  4. 【连载4】二手电商丨从需求到功能
  5. Libra演进与数字货币国际化
  6. tr069 Cpe ACS 模拟器
  7. Python提取ABAQUS结果数据
  8. 【CheatSheets】AI速查表集合 一图胜千言
  9. Android - 抑制lint的Android XML的警告:tools:ignore
  10. 一个简单的linux命令——ls