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跨域解决方案相关推荐

  1. springboot 跨域解决方案

    跨域解析:当一个请求url的协议.域名.端口三者之间任意一个与当前页面url不同即为跨域 跨域原理:无论哪种方案,最终目的都是修改响应头,向响应头中添加浏览器所要求的数据,进而实现跨域 跨域访问的弊端 ...

  2. 【安全系列之跨域】跨域解决方案

    一.为什么会出现跨域问题 出于浏览器的同源策略限制.同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CS ...

  3. springBoot跨域注解@CrossOrigin

    Spring Framework 4.2 GA为CORS提供了第一类支持,使您比通常的基于过滤器的解决方案更容易和更强大地配置它.所以springMVC的版本要在4.2或以上版本才支持@CrossOr ...

  4. kuayu react_react跨域解决方案

    react跨域解决方案 1.开发环境:react+axios+element 2.电脑系统:windows10专业版 3.在使用react开发的过程中,我们总是会遇到跨域的问题,下面我来分享一下,在r ...

  5. 跨域解决方案(史上最易懂)

    跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理, 比如 http://1.2. ...

  6. Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持

    Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1.设置 document.domain为一致  推荐1 2.Apache 反向代理 推荐1 3. ...

  7. 跨域解决方案一:使用CORS实现跨域

    跨域解决方案一:使用CORS实现跨域 参考文章: (1)跨域解决方案一:使用CORS实现跨域 (2)https://www.cnblogs.com/choon/p/5386150.html (3)ht ...

  8. Mac上Chrome浏览器跨域解决方案

    Mac上Chrome浏览器跨域解决方案 参考文章: (1)Mac上Chrome浏览器跨域解决方案 (2)https://www.cnblogs.com/dxzg/p/9707639.html 备忘一下 ...

  9. localStorage和cookie的跨域解决方案

    localStorage和cookie的跨域解决方案 参考文章: (1)localStorage和cookie的跨域解决方案 (2)https://www.cnblogs.com/vsmart/p/9 ...

最新文章

  1. yum 仓库 本地和在线
  2. equals和=,==的区别
  3. 为什么只推荐入主流版本华强北耳机?
  4. 【计算机网络】比较TCP与UDP
  5. css span 右端对齐_使用 CSS 实现具有方面感知的幽灵按钮
  6. 学python可以从事什么工作-学Python能干什么工作?工作前景怎么样?
  7. Linux查看和注销用户
  8. 如果在安卓后台杀死程序怎么进行保存
  9. labimage 怎样旋转图片_西安匠艺工坊丨别克gl8内饰改装床车图片,精湛工艺,空间力量...
  10. 【优化算法】黑寡妇优化算法(BWOA)【含Matlab源码 1446期】
  11. JAVA怎么接收长字符串_【Java】Java中常用的String方法
  12. shell脚本学习指南——好书推荐
  13. 自制实时绿幕视频背景换图片视频的抠图软件
  14. lq106kf打印机设置_爱普生lq106kf
  15. python之世界地图绘制_Python用 matplotlib 工具包来绘制世界地图
  16. CSS border dashed 虚线调整
  17. 双屏1920*1080时全屏显示PPT时,出现第二块屏分辨率自动降低的问题
  18. npm方法创建一个vue项目,引入element插件
  19. 服务器托管费用怎么计算?
  20. Atlas 200 DK登录密码 制卡安装DDK和lib

热门文章

  1. 超详细:Springboot连接centos7下redis6的必要配置和失败分析
  2. [Leetcode]字符串转换整数 (ATOI)
  3. 构建基本的嵌入式Linux根文件系统
  4. 百胜软件牵手晨光文具打造电商信息化平台
  5. 在 eclipse 中设置每行的字数
  6. struts2、hibernate工作原理和流程
  7. 【HTTP】 认证和单点登录 【瞎写的…】
  8. 警惕cocos2d-x Win32下资源命名大小写
  9. STL vector 用法
  10. 存储过程与触发器的应用