Spring boot 和Vue开发中CORS跨域问题解决


Posted in Javascript onSeptember 05, 2018

跨域资源共享CORS(Cross-origin Resource Sharing),是W3C的一个标准,允许浏览器向跨源的服务器发起XMLHttpRequest请求,克服ajax请求只能同源使用的限制。关于CORS的详细解读,可参考阮一峰大神的博客:跨域资源共享CORS详解。

1. 遇到的问题:

我用spring-boot 做Rest服务,Vue做前端框架,用了element-admin-ui这个框架做后台管理。在调试的过程中遇到了如下错误:

Preflight response is not successful

2. 分析问题

这个问题是典型的CORS跨域问题。

所谓跨域:

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

3. 解决方法

在项目中添加类CustomCORSConfiguration 代码如下:

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;

/**
 * @author spartajet
 * @description
 * @create 2018-05-15 下午5:00
 * @email spartajet.guo@gmail.com
 */
@Configuration
public class CustomCORSConfiguration {
  private CorsConfiguration buildConfig() {
    CorsConfiguration corsConfiguration = new CorsConfiguration();
    corsConfiguration.addAllowedOrigin("*");
    corsConfiguration.addAllowedHeader("*");
    corsConfiguration.addAllowedMethod("*");
    corsConfiguration.setAllowCredentials(true);
    return corsConfiguration;
  }

  @Bean
  public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", buildConfig());
    return new CorsFilter(source);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype使用指南之enumerable.js
Jan 10 Javascript
JavaScript 在线压缩和格式化收藏
Jan 16 Javascript
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
jquery offset函数应用实例
Nov 14 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
FullCalendar日历插件应用之数据展现(一)
Dec 23 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
Jun 06 Javascript
jquery实现input框获取焦点的简单实例
Jan 26 Javascript
基于JS判断对象是否是数组
Jan 10 Javascript
Vue引入Stylus知识点总结
Jan 16 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
Jul 24 Javascript
使用jQuery给Table动态增加行、清空table的方法
Sep 05 #jQuery
jQuery常见的遍历DOM操作详解
Sep 05 #jQuery
浅谈react性能优化的方法
Sep 05 #Javascript
angularjs性能优化的方法
Sep 05 #Javascript
jQuery实现获取及设置CSS样式操作详解
Sep 05 #jQuery
在vue中给列表中的奇数行添加class的实现方法
Sep 05 #Javascript
Vue.js 实现数据展示全部和收起功能
Sep 05 #Javascript
You might like
PHP新手上路(七)
2006/10/09 PHP
一个好用的分页函数
2006/11/16 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
javascript静态的url如何传递
2007/05/03 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
js 模拟气泡屏保效果代码
2010/07/10 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
js常见遍历操作小结
2019/06/06 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python读写LMDB文件的方法
2018/07/02 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
小学教师自我鉴定
2013/11/07 职场文书
给校长的建议书600字
2014/05/15 职场文书
节能减耗标语
2014/06/21 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
2015年双拥工作总结
2015/04/08 职场文书
科级干部培训心得体会
2016/01/06 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers