1.使用的框架:spring+springmvc+mybatis,前端使用Vue,spring版本使用4.2以上版本

4.2.5.RELEASE

3.2.1

2.在controller类上加注解@CrossOrigin

@CrossOrigin//跨域问题@Controller@RequestMapping("/department")

public classDepartmentController implementsBaseController{

@AutowiredprivateIDepartmentService departmentService;

/*** 添加或者修改*@paramdepartment*@return*/@RequestMapping(method = RequestMethod.PUT)

@ResponseBody@OverridepublicAjaxResult addOrUpdate(@RequestBodyDepartment department) {

try{

if(department.getId()==null){

departmentService.add(department);

}else{

departmentService.update(department);

}

returnAjaxResult.me();

} catch(Exception e) {

e.printStackTrace();

returnAjaxResult.me().setSuccess(false).setMessage("操作失败"+ e.getMessage());

}

}

加上此注解后,部分版本就可以跨域了,但我的不行,报错500,说我的代码有问题。其实 只要将报错的属性设置到response头部,即可解决此问题,所以我们只要提供一个过滤器或者一个拦截全部的AOP即可解决此问题  代码如下:

第一种:新建一个CrossFilter类实现Filter这个类

importorg.springframework.stereotype.Component;

importjavax.servlet.*;

importjavax.servlet.http.HttpServletResponse;

importjava.io.IOException;

@Componentpublic classCrossFilter implementsFilter {

public voiddoFilter(ServletRequest req, ServletResponse res, FilterChain chain) throwsIOException, ServletException {

HttpServletResponse response = (HttpServletResponse) res;

//如果要做细的限制,仅限某域名下的可以进行跨域访问到此,可以将*改为对应的域名。response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader("Access-Control-Allow-Methods", "*");

response.setHeader("Access-Control-Max-Age", "1728000");

response.setHeader("Access-Control-Allow-Credentials", "true");

response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

// response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");chain.doFilter(req, res);

}

public voidinit(FilterConfig filterConfig) {}

public voiddestroy() {}

}

第二种:使用AOP

//证明是一个配置文件(使用@Component也可以,因为点入后会发现@Configuration还是使用了@Component)

@Configuration

//证明是一个切面

@Aspect

public class ControllerAOP {

//环绕aop

//execution表达式 此表达式表示扫描controller下所有类的所有方法都执行此aop

@Around("execution (* com.beyondli.controller..*.*(..))")

public Object testAop(ProceedingJoinPoint pro) throws Throwable {

//获取response

HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();

//核心设置

response.setHeader("Access-Control-Allow-Origin", "*");

//执行调用的方法

Object proceed = pro.proceed();

return proceed;

}

}

前端使用的是Vue:

查询

新增

编辑

删除

取消

提交

java后台处理跨域问题_用cros解决前后端分离的跨域问题相关推荐

  1. java不同项目加token访问_利用JWT实现前后端分离的Token验证

    写在前面:本篇文章的代码图片展示均使用carbon绘制,图片质量很高,如果图片过小可以点击查看原图.项目实例前端部分使用基于Angular的Ionic框架(TypeScript),使用Spring B ...

  2. 多学一招总没错吧?SpringBoot解决前后端分离的跨域问题

  3. 解决java前后端分离端口跨域问题

    解决java前后端分离端口跨域问题 参考文章: (1)解决java前后端分离端口跨域问题 (2)https://www.cnblogs.com/mollie-x/p/10449686.html 备忘一 ...

  4. 前后端分离与跨域的解决方案(CORS的原理)

    前后端分离 前后端分离的好处 最大的好处就是前端JS可以做很大部分的数据处理工作,对服务器的压力减小到最小. 后台错误不会直接反映到前台,错误接秒较为友好. 由于后台是很难去探知前台页面的分布情况,而 ...

  5. Vue整合nginx:(1)开发环境npm run dev下,通过nginx解决前后端分离造成的跨域问题

    Vue整合nginx:(1)开发环境npm run dev下,通过nginx解决前后端分离造成的跨域问题 参考文章: (1)Vue整合nginx:(1)开发环境npm run dev下,通过nginx ...

  6. Nginx完美解决前后端分离端口号不同导致的跨域问题

    Nginx完美解决前后端分离端口号不同导致的跨域问题 参考文章: (1)Nginx完美解决前后端分离端口号不同导致的跨域问题 (2)https://www.cnblogs.com/PyKK2019/p ...

  7. Vue+Flask前后端分离 Vue3跨域配置

    Vue+Flask前后端分离 Vue3跨域配置 前端端口号为8080 后端端口号为5000 问题描述 问题解决 接口路径映射 前端端口号为8080 后端端口号为5000 后端端口API 代码片. @a ...

  8. java计算机毕业设计基于springboot+vue+elementUI的实验室管理系统(前后端分离)

    项目介绍 科技水平一直是体现一个国家强弱的重要标志,而科技的一点诞生地是实验室,如果能够更好的对实验室进行管理是很多实验室管理人员一直研究的一个问题.只有更加科学和合理化的利用实验室才能够更好的让科技 ...

  9. Spring Boot2.x-13前后端分离的跨域问题解决方法之Nginx

    文章目录 概述 浏览器同源策略 后台搭建 pom.xml interceptor 配置 Controller 启动测试 浏览器和session 后端工程发布到服务器上 问题复现 通过Nginx反向代理 ...

  10. 前后端分离的跨域解决方案

    声明: 在以往的开发中,前后端分离也不是像现在这么热门,所谓的前端工程师也只不过是写好静态页面由Java工程师或者php工程师嵌入到页面中进行开发,这或许加重了这些工程师的工作量,而且在样式调试上由纯 ...

最新文章

  1. 腾讯首次公布微信最全用户数据【完整版】
  2. 几个 Python 语法糖的实现
  3. SAP HR模块的基础数据表和增强配置
  4. android系统中sd卡各文件夹功能详解 guessword,AndroidStudio LiveTemplate函数说明
  5. python使用近似公式计算e_python如何算自然底数e(方法二)
  6. Post请求中加不加@RequestBody的区别和formedata与JSON传递的区别
  7. 石化总部java面试题_中国石化面试经验
  8. SVN:安装svn进行上传和检出文件的常用命令
  9. 从Bayes角度理解Deep learning
  10. COleDateTime 使用方法
  11. iOS WebView生成长截图的第三种解决方案
  12. Linux中vi命令替换字符串的操作
  13. 云计算技术体系结构介绍
  14. 计算机操作员评分标准,计算机操作员EXCEL操作竞赛样卷与评分标准.doc
  15. 正则表达式:多选项匹配
  16. 前端基础知识总结---HTML篇
  17. 保研之路——哈深计算机预推免
  18. 流行和声(5)minor7和弦
  19. The resource identified by this request is only capable of generating respon
  20. layui数据表格自带的排序功能

热门文章

  1. Processes and Threads 线程和进程的理解
  2. Atitit 提升科技影响力 目录 1. 大原则 2 1.1. 科技强人必须是创新型[ 2 1.2. 要有一定的体量和规模 2 2. 创新能力主要科技指标 2 2.1. 领域科技大奖与荣誉 2 2
  3. Atitit 编程范式总结 目录 1.1.1. IP(Imperative Programming)指令式编程 1 1.1.2. SP(Structured Programming)结构化编程 2 1
  4. Atitit mybatis spring整合。读取spring、yml、文件的mysql url 步骤,读取yml,文件,使用ongl定位到url pwd usr 读取mybatis模板配置,
  5. Atitit.获取某个服务 网络邻居列表 解决方案
  6. Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript.
  7. paip.python错误解决22
  8. PAIP.一些流氓软件的流氓营销方法.txt
  9. 投资62笔!私募巨头凯雷的“中国生意经”
  10. 互联网光环下的新金融群像:运营最重要的是说人话