完美解决axios跨域请求出错的问题


Posted in Javascript onFebruary 05, 2018

错误信息:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 403

随着前端框架的发展,如今前后端数据分离已经成了趋势,也就是说,前端只需要用ajax请求后端的数据合成页面,后端仅仅提供数据接口,给数据就行,好处就是前端程序员再也不用在自己的本地搭建Web服务器,前端也不需要懂后端语法,后端也不需要懂前端语法,那么简化了开发配置,也降低了合作难度。

常规的GET,POST,PUT,DELETE请求是简单请求(相对于OPTIONS请求),但是OPTIONS有点儿特别,它要先发送请求问问服务器,你要不要我请求呀,要我就要发送数据过来咯(这完全是根据自己的理解写的,如果有误,敬请谅解,请参考阮一峰大神原文。)

在Vue的项目里,Http服务采用Axios,而它正是采用OPTIONS请求。

如果仅仅在header里面加入: 'Access-Control-Allow-Origin':*,是并不能解决问题的,错误就是如文章开头所示。

这儿就需要后台对OPTIONS请求额外处理。

本文以Spring MVC为例:

添加一个拦截器类:

public class ProcessInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
    httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
    httpServletResponse.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    httpServletResponse.setHeader("X-Powered-By","Jetty");

    String method= httpServletRequest.getMethod();
    if (method.equals("OPTIONS")){
      httpServletResponse.setStatus(200);
      return false;
    }
    System.out.println(method);
    return true;
  }
  @Override
  public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
  }
  @Override
  public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
  }
}

在spring-mvx.xml配置Spring 拦截器:

<mvc:interceptors> 
    <bean class="cn.tfzc.ssm.common.innterceptor.ProcessInterceptor"></bean> 
  </mvc:interceptors>

至此,问题已经解决:

完美解决axios跨域请求出错的问题

以上这篇完美解决axios跨域请求出错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
浅谈js函数的多种定义方法与区别
Nov 29 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
JS隐藏号码中间4位代码实例
Apr 09 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 Javascript
vue项目打包之开发环境和部署环境的实现
Apr 23 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 19 Javascript
vue 页面加载进度条组件实例
Feb 05 #Javascript
JS设计模式之状态模式概念与用法分析
Feb 05 #Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 #Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 #Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 #Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 #Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 #Javascript
You might like
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
Python引用模块和查找模块路径
2016/03/17 Python
Python高级用法总结
2018/05/26 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Python绘图实现显示中文
2019/12/04 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
《可爱的动物》教学反思
2014/02/22 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
个人总结怎么写
2015/02/26 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang
Java的Object类的九种方法
2022/04/13 Java/Android