完美解决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 相关文章推荐
图片连续滚动代码[兼容IE/firefox]
Jun 11 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
JavaScript中的类型检查
Feb 03 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
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实现获取图片颜色值的方法
2014/07/11 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
事业单位个人应聘自荐信
2013/09/21 职场文书
文秘专业自荐信
2013/10/14 职场文书
农业开发项目建议书
2014/05/16 职场文书
品牌转让协议书
2014/08/20 职场文书
研究生个人学年总结
2015/02/14 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python