springboot跨域解决方案
1:为什么会出现跨域问题
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)
简单说A应用只能访问A应用后台传来数据,B应用只能访问B应用后台传来的数据,如果A应用用Ajax获取数据时的URL地址中的协议、端口、域名其中有一个和B应用对应的话,则是A应用跨域了想获取B应用数据,是不允许的
2:什么是跨域
当一个请求url的 协议、域名、端口 三者之间任意一个与当前页面url不同即为跨域
当前页面URL |
被请求页面URL |
是否跨域 |
原因 |
http://www.test.com/ |
http://www.test.com/index.html |
否 |
同源(协议、域名、端口号相同) |
http://www.test.com/ |
https://www.test.com/index.html |
跨域 |
协议不同(http/https) |
http://www.test.com/ |
http://www.baidu.com/ |
跨域 |
主域名不同(test/baidu) |
http://www.test.com/ |
http://blog.test.com/ |
跨域 |
子域名不同(www/blog) |
http://www.test.com:8080/ |
http://www.test.com:7001/ |
跨域 |
端口号不同(8080/7001) |
3、解决方案
3.1、配置Corsfilter全局
@EnableAsync
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}/*** 允许跨域请求配置** @return a CorsFilter*/@Bean@Order(0)public CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();final CorsConfiguration config = new CorsConfiguration();final long corsCacheMaxAge = 18000L;// 允许cookies跨域config.setAllowCredentials(true);// #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Originconfig.addAllowedOrigin("*");// #允许访问的头信息,*表示全部config.addAllowedHeader("*");// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了config.setMaxAge(corsCacheMaxAge);// 允许提交请求的方法,*表示全部允许config.addAllowedMethod("OPTIONS");config.addAllowedMethod("HEAD");// 允许Get的请求方法config.addAllowedMethod("GET");config.addAllowedMethod("PUT");config.addAllowedMethod("POST");config.addAllowedMethod("DELETE");config.addAllowedMethod("PATCH");source.registerCorsConfiguration("/**", config);return new CorsFilter(source);}
}
3.2、实现WebMvcConfigurer
@Configuration
public class CorsConfig implements WebMvcConfigurer {@Override
public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allow
edMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").maxAge(3600); }
}
springboot跨域解决方案相关推荐
- springboot 跨域解决方案
跨域解析:当一个请求url的协议.域名.端口三者之间任意一个与当前页面url不同即为跨域 跨域原理:无论哪种方案,最终目的都是修改响应头,向响应头中添加浏览器所要求的数据,进而实现跨域 跨域访问的弊端 ...
- 【安全系列之跨域】跨域解决方案
一.为什么会出现跨域问题 出于浏览器的同源策略限制.同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CS ...
- springBoot跨域注解@CrossOrigin
Spring Framework 4.2 GA为CORS提供了第一类支持,使您比通常的基于过滤器的解决方案更容易和更强大地配置它.所以springMVC的版本要在4.2或以上版本才支持@CrossOr ...
- kuayu react_react跨域解决方案
react跨域解决方案 1.开发环境:react+axios+element 2.电脑系统:windows10专业版 3.在使用react开发的过程中,我们总是会遇到跨域的问题,下面我来分享一下,在r ...
- 跨域解决方案(史上最易懂)
跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理, 比如 http://1.2. ...
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1.设置 document.domain为一致 推荐1 2.Apache 反向代理 推荐1 3. ...
- 跨域解决方案一:使用CORS实现跨域
跨域解决方案一:使用CORS实现跨域 参考文章: (1)跨域解决方案一:使用CORS实现跨域 (2)https://www.cnblogs.com/choon/p/5386150.html (3)ht ...
- Mac上Chrome浏览器跨域解决方案
Mac上Chrome浏览器跨域解决方案 参考文章: (1)Mac上Chrome浏览器跨域解决方案 (2)https://www.cnblogs.com/dxzg/p/9707639.html 备忘一下 ...
- localStorage和cookie的跨域解决方案
localStorage和cookie的跨域解决方案 参考文章: (1)localStorage和cookie的跨域解决方案 (2)https://www.cnblogs.com/vsmart/p/9 ...
最新文章
- yum 仓库 本地和在线
- equals和=,==的区别
- 为什么只推荐入主流版本华强北耳机?
- 【计算机网络】比较TCP与UDP
- css span 右端对齐_使用 CSS 实现具有方面感知的幽灵按钮
- 学python可以从事什么工作-学Python能干什么工作?工作前景怎么样?
- Linux查看和注销用户
- 如果在安卓后台杀死程序怎么进行保存
- labimage 怎样旋转图片_西安匠艺工坊丨别克gl8内饰改装床车图片,精湛工艺,空间力量...
- 【优化算法】黑寡妇优化算法(BWOA)【含Matlab源码 1446期】
- JAVA怎么接收长字符串_【Java】Java中常用的String方法
- shell脚本学习指南——好书推荐
- 自制实时绿幕视频背景换图片视频的抠图软件
- lq106kf打印机设置_爱普生lq106kf
- python之世界地图绘制_Python用 matplotlib 工具包来绘制世界地图
- CSS border dashed 虚线调整
- 双屏1920*1080时全屏显示PPT时,出现第二块屏分辨率自动降低的问题
- npm方法创建一个vue项目,引入element插件
- 服务器托管费用怎么计算?
- Atlas 200 DK登录密码 制卡安装DDK和lib