完美解决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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
JavaScript Eval 函数使用
Mar 23 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
Apr 02 Javascript
json的前台操作和后台操作实现代码
Jan 20 Javascript
JS实现时间格式化的方式汇总
Oct 16 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
深入理解JavaScript 函数
Jun 06 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
Jan 13 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
Mar 28 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
详解Vue如何支持JSX语法
Nov 10 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
May 28 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
PHP实现事件机制的方法
2015/07/10 PHP
js 动态文字滚动的例子
2011/01/17 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
浅谈Python中数据解析
2015/05/05 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
EM算法的python实现的方法步骤
2018/01/02 Python
Sanic框架Cookies操作示例
2018/07/17 Python
对Django外键关系的描述
2019/07/26 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
一套C#面试题
2013/10/09 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
优秀民警事迹材料
2014/01/29 职场文书
20年同学聚会感言
2014/02/03 职场文书
高一新生军训感言
2014/03/02 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
学校标语口号大全
2015/12/26 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS