Spring Boot中对CORS(Cross-Origin Resource Sharing 跨域资源共享)的支持
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 跨域资源共享)的支持相关推荐
- CORS(Cross-Origin Resource Sharing)跨域资源共享
CORS(Cross-Origin Resource Sharing)跨域资源共享 由于浏览器同源策略的影响,跨域问题在我们日常开发中经常遇到,此前有一系列的跨域问题的解决方案,如JSONP.flas ...
- CORS(Cross-Origin Resource Sharing) 跨域资源共享
CORS 全称:Cross-Origin Resource Sharing 中文意思:跨域资源共享? 好吧,目前中文方面的资料还比较少,能搜索到的那仅有的几篇相关介绍,也几乎是雷同的. 最近工作上也有 ...
- tomcat7.0配置CORS(跨域资源共享)
平时我们做前台页面时可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...
- php跨域资源共享,CORS 跨域资源共享
CORS (Cross-Origin Resource Sharing) 跨域资源共享 为什么需要 CORS 首先,跨域指的是同一个域名下的资源,同时要注意域名与子域名,比如 developers.e ...
- Cross-Origin Resource Sharing[1] 跨域资源共享
Cross-Origin Resource Sharing [1] 跨域资源共享. 中文名 跨域资源共享 外文名 Cross Origin Resource Sharing CORS是一种允许当前域( ...
- cors跨域_Spring Boot 中通过 CORS 解决跨域问题
(给ImportNew加星标,提高Java技能) 转自:江南一点雨 今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的, ...
- Spring Boot CORS跨域资源共享实现方案
同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能 同源策略限制cookie 等信息的跨源网页读取,可以保护本地用户信息 同源策略限制跨域 aja ...
- Spring Boot 中三种跨域场景总结
文章目录 1.什么是跨域 2.解决方案 2.1 存在的问题 3.SpringSecurity 3.1 方式一 3.2 方式二 4.OAuth2 5.小结 跨域这个问题松哥之前写过文章,但是最近收到小伙 ...
- Maven中的profile和spring boot中的profile进行结合
2019独角兽企业重金招聘Python工程师标准>>> 有一些应用,采用了spring boot和spring boot profile.然后想把maven 中的profile和sp ...
最新文章
- (自已看的东西)java通过get和post直接提交
- Angular中的路由配置、路由重定向、默认选中路由
- angular 示例项目
- 设计模式建议学习顺序
- 设计模式学习之--Singleton(单例)模式
- jquery获取json对象中的key小技巧
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_03.jdbc操作数据库的问题分析
- TestFlight测试步骤
- 用c加加创建c语言项目,如何使用visual studio 2017创建C语言项目
- 洛谷B2099 矩阵交换行(swap函数)
- 【Python小工具】若干图片合并生成动态图(.gif)
- 字符串中查找IP地址的正则表达式
- 手机抓取蓝牙日志btsnoop的方法汇总(Android一直补充中)
- DouPHP模块化企业网站管理系统源码 v1.6
- 华研c语言从入门到精通,2020考研答案_ 2018年12月英语六级答案【三套全】(华研外语版)_沪江英语...
- node中使用es6语法
- 神鬼传奇客户端-终极优化精简方法
- 函数 函数的基本使用 函数的四种基本形式 可选参数 函数默认参数 函数的剩余参数 构造函数() 函数重(chong)载
- 创建python虚拟环境,安装Django
- amd和arm安装ffmpeg踩坑报错处理