完美解决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 相关文章推荐
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
jquery+ajax验证不通过也提交表单问题处理
Dec 12 Javascript
使用mini-define实现前端代码的模块化管理
Dec 25 Javascript
json实现前后台的相互传值详解
Jan 05 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
React进阶学习之组件的解耦之道
Aug 07 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
js实现指定时间倒计时效果
Aug 26 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
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上传图片、删除图片实现代码
2010/05/12 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
解析php中const与define的应用区别
2013/06/18 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
js表单序列化判断空值的实例
2017/09/22 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
python中while循环语句用法简单实例
2015/05/07 Python
python GUI实例学习
2017/11/21 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Django 路由层URLconf的实现
2019/12/30 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
大学生就业自我鉴定
2013/10/26 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
作风建设整改方案
2014/10/27 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
vue+echarts实现多条折线图
2022/03/21 Vue.js