完美解决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 相关文章推荐
用javascript实现在小方框中浏览大图的代码
Aug 14 Javascript
jQuery插件实现大图全屏图片相册
Mar 14 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
通过封装scroll.js 获取滚动条的值
Jul 13 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 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提取中文首字母
2008/04/09 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
学习Vue组件实例
2018/04/28 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python把转列表为集合的方法
2019/06/28 Python
python pycharm的安装及其使用
2019/10/11 Python
python 实现多维数组转向量
2019/11/30 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
学校办公室主任职责
2013/12/27 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
汉语言文学职业规划
2014/02/14 职场文书
应届大专生自荐书
2014/06/16 职场文书
教师节标语大全
2014/10/07 职场文书
单位员工收入证明样本
2014/10/09 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
二胎满月酒致辞
2015/07/29 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
《给予树》教学反思
2016/03/03 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
python批量创建变量并赋值操作
2021/06/03 Python