完美解决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下有效)关于checkbox 三态
May 12 Javascript
Prototype 学习 工具函数学习($A方法)
Jul 12 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 Javascript
使用Jquery实现每日签到功能
Apr 03 Javascript
跟我学习javascript的循环
Nov 18 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
针对JavaScript中this指向的简单理解
Aug 26 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
原生js实现自定义滚动条
Jan 20 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 数学运算验证码实现代码
2009/10/11 PHP
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
js 异步处理进度条
2010/04/01 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
python之Socket网络编程详解
2016/09/29 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
十佳美德少年事迹材料
2014/02/05 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
一年级学生期末评语
2014/04/21 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
python基础之类属性和实例属性
2021/10/24 Python
Python列表的索引与切片
2022/04/07 Python
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis