解决axios跨域请求出错的问题

Response to preflight request doesn‘t pass access control check: No ‘Access-Control-Allow-Origin‘ he 当你的拦截器拦截到这种OPTIONS请求时,如果没有正确地处理(例如,返回正确的CORS头部信息),那么浏览器就会认为服务器是不可连接到的所以阻止实际的请求发送,所以我们需要确保拦截器在处理OPTIONS请求时,返回正确的CORS头部信息。预检请求是一种由浏览器自动发送的、使用OPTIONS方法的HTTP请求,它用于检查实际请求是否可以被服务器接受。使用axios请求,并在请求头添加token,发送请求,后端能成功接收请求,但请求头没有token,导致过滤器拿不到token进行校验。 阅读详情

错误信息:

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>


至此,问题已经解决:




ajax 报错 Response to preflight request doesn‘t pass access control check: No *** header 问题截图 之前的项目中,就遇到了跨域的问题,所以这次一开始后端就设置了允许跨域,但是仍然抛出这样的异常,百度半天,发现是 axios 的问题,我的代码: const result = await axios.post('http://localhost:3000/login', this.login_form) login_from 是一个对象 大部分问题的解决都是使用了 qs,根据网上的说法 axios 只能以字符串的形式发送,而axios在发送数据时需要字符串的方式进行发送,也就是说是放在 fo 阅读详情

相关推荐

Vue使用axios、解决axios跨域

axios axios文档 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持防御 XSRF 看起来就很高大上,就决定是它了;但用起来脑子石化,一脸黑...

weixin_41105030的博客 3105

跨域问题Response to preflight request doesn‘t pass access control check No ‘Access-Control-Allow-Origin

跨域问题Response to preflight request doesn’t pass access control check: No 'Access-Control-Allow-Origin 现象 释义 这个问题,属于跨域没有跨过去。 问题原因1:后端没有设置header 解决办法:后端action(controller)里添加如下代码即可 response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader(

weixin_44867717的博客 1万+

使用ACOLITE对OLCI影像进行大气校正+批处理

使用ACOLITE对OLCI影像进行大气校正+批处理

mrzhy1的博客 7361

SpringBoot跨域问题解决

根据资料显示,这个是因为浏览器预检请求失败,复杂请求会做预检请求,比如header中有自动以的属性等情况,当前的报错是指OPTION 请求失败,需要后端放行 OPTION 请求。经过一番百度之后,需要在控制器上添加处理跨域的注解,前端访问后台接口时,浏览器报错,跨域无法访问。然后将拦截器注册到全局拦截器中,使其生效。再次访问接口,请求正常返回了。

每天学习一点点 9958

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 455

嵌入式设备系统日志记录及调试技巧_嵌入式日志系统(1),如何成为杰出的程序员

这里面我使用的芯片为哈弗体系,全局常量存储编译器默认分配在flash,需要注意如果使用片内flash时,注意存储调试等级的flash块不要与代码区重合,要不然修改调试等级擦除flash块同时PC指针指向当前块的代码区,会导致仪器死机;这个也是之前用的比较多的,以上代码是模仿linux 内核的写法,可以比较好的做到日志信息分层,编译时相加对应的编译开关即可。但有个弊端就是,切换debug等级时,需要重新编译且需更新固件,而嵌入式设备出现异常后更新固件往往复位后,故障有时很难复现,调试起来比较浪费时间。

2401_84240431的博客 1295

跨域问题Response to preflight request doesn‘t pass access control check: No ‘Access-Control-Allow-Origin

我遇到了很多次这个问题,不过都是属于跨域没有跨过去。可能是来自于前端 ,也可能是来自于后端,详情请看下文。

winnieFighting 15万+

【大唐杯学习超快速入门】5G技术原理仿真教学——5G网络开通调测与车联网

自用笔记,比较乱。

qq_41224270的博客 1万+

axios请求跨域前端解决_完美解决axios跨域请求出错的问题

错误信息: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 allo...

weixin_33617691的博客 1472

pgAdmin4备份恢复实战:从安装到避坑指南

本文提供了一份详尽的pgAdmin4备份恢复实战指南,涵盖从安装配置到执行备份恢复的全流程。针对Windows环境下的浏览器兼容性、二进制路径配置等常见问题,给出了具体解决方案。重点强调了使用pgAdmin4进行备份恢复的可靠性,特别是在处理包含PostGIS等扩展的数据库时,能有效避免数据类型和权限错误,确保数据迁移的完整性与安全性。

weixin_29266007的博客 439

杰理SDK入门教程(一):编译环境的安装和程序下载

本文档提供了杰理SDK在Windows系统下的开发环境配置与代码编译指南。主要内容包括:1) 开发环境安装步骤,需下载Code::Blocks和杰理工具链;2) 编译过程中常见问题的解决方案,如安全警告提示和链接文件缺失问题;3) 代码编译流程说明,包括打开工程、连接开发板、执行编译等步骤。文档特别强调了强制升级模式的操作方法,并指出需避免点击运行/调试按钮。最后提示了杀毒软件可能误报工具链的注意事项。

qq_42014563的博客 2744

解决axios跨域请求出错的问题状态码403错误

错误信息: 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

年华 6万+

【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?

使用绘图 工具条上的新建圆工具 可创建一个椭圆,使其包含要在该数据框中显示的数据范围。. 在基础工具工具条上单击选择元素工具 ,然后选择圆形。. 在内容列表中右键单击要裁剪的数据框,然后单击属性。. 单击裁剪选项下拉菜单,然后选择裁剪至形状。. 单击数据框属性 对话框中的数据框选项卡。还可以更改裁剪形状轮廓的边框选项。打开软件,添加配套实验数据包中。修改椭圆的属性,使其透明。. 单击所选图形的轮廓。. 单击指定形状按钮。

智慧空间实验室 958

解决vue3+vite跨域失败问题

解决vue3+vite跨域失败,解决vite中配置不生效问题

qq_52014705的博客 5455

YOLOv11改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 854

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

axios 跨域请求详解

写这篇文章的背景是因为之前遇到的,在跨域的情况下通过 axios 发起的 get 请求正常,post 请求会在正式请求发送之前先发送一个 opstions 请求,而后端接口没有兼容 options,导致 404 的情况。 而在解决这个问题时带着好奇心顺带查了一下,给自己补充了些知识点。 跨域请求分两种 简单讲,从 JavaScript 代码发起的 XMLHttpRequest 请求可以分为两种: ...

weixin_33991418的博客 3484

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

axios post请求跨域403以及传参问题解决

一个react的项目,其中使用axios作为http请求工具,在使用时遇到了一些坑,记录I一下。 1、get请求,报跨域错误: has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: It does not have HTTP ok status. 后端使用springmvc,在controller的方法中,添加response的响应控制即可: httpRe

赶路人儿 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Vue 快速入门系列】一文透彻vue中使用axios及跨域问题的解决

Axios(ajax i/o system),是Vue创建者主推的请求发送方式,因其简单的配置与良好的性能被前端爱好者所喜爱。众所周知,在进行网页设计时经常需要从后端拿数据,在Web应用初期会将整个页面或者文档直接拿过来,随着Web应用的发展,人们对性能的不断提升,逐渐向无页面刷新从后端获取数据,而axios就是其中一种新兴、火热的方式。在学习本篇博客时,不需要太过于了解请求的发送过程,但需要对各种请求方式有一个大致的认识。本文将会从0到1的介绍vue中如何使用axios,并结合项目实例加深大家印象。

一个非常Cool的人 4223

入门 - Vue中使用axios原理分析及解决前端跨域问题

是Vue创建者主推的请求发送方式,因其简单的配置与良好的性能被前端爱好者所喜爱。众所周知,在进行网页设计时经常需要从后端拿数据,在Web应用初期会将整个页面或者文档直接拿过来,随着Web应用的发展,人们对性能的不断提升,逐渐向无页面刷新从后端获取数据,而axios就是其中一种新兴、火热的方式。在学习Vue中使用axios时,不需要太过于了解请求的发送过程,但需要对各种请求方式有一个大致的认识。本文将会从0到1的介绍vue中如何使用axios,并结合项目实例加深大家印象。

qq_61863348的博客 3902

Vue使用axios跨域出错解决方案

Vue使用axios跨域出错解决方案        在 Vue+SpringBoot 的前后端分离项目中,经常使用 axios 来解决跨域问题。但有时候配置错误,经常会出现问题,做登录模块时在下就遭了道! 前端 Vue 配置如下: 在config文件夹中的 index.js 文件中找到proxyTable属性,添加如下代码 proxyTable: { // 跨域支持 '/api': {

我家有只小金毛的博客 1969

axios get怎么还会显示跨域_axios跨域请求出错怎样解决

这次给大家带来axios跨域请求出错怎样解决,axios跨域请求出错怎样解决的注意事项有哪些,下面就是实战案例,一起来看一下。Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested reso...

weixin_42345187的博客 823

手把手教你 axios 解决跨域问题

背景 在完成了页面样式的制作后将开始和后端联调数据。 好在后端提供的接口已经可以使用,我们按照正常逻辑去请求接口,这里用 axios 库来实现。按照文档说明一顿操作后,参数和路径都设置成功,可是在按下按钮发送请求的时候出错了,报了一个跨域的问题。 第二条错误是因为 ...

weixin_44184425的博客 1万+

axios 跨域请求详情

axios 跨域请求详情 写这篇文章的背景是因为之前遇到的,在跨域的情况下通过 axios 发起的 get 请求正常,post 请求会在正式请求发送之前先发送一个 opstions 请求,而后端接口没有兼容 options,导致 404 的情况。 而在解决这个问题时带着好奇心顺带查了一下,给自己补充了些知识点 跨域请求分两种 简单讲, 从 JavaScript 代码发起的 XMLHttpRequest 请求可以分为两种: 不会触发CORS预检的请求,而是直接向服务端发送请求,什么是 CORS预检 咱们后面

m0_53266704的博客 2753

vue cli+axios踩坑记录+拦截器使用,代理跨域proxy(更新)

1、首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点 建议方式在main.js中如下声明使用 import axios from 'axios'; Vue.prototype.$axios=axios; 那么在其他vue组件中就可以this.$axios调用使用2.小小的提一下vue脚手架前端调后端数据接口时候的跨域问题,在webpack配置一下

BeterJane 11万+

vue-cli+axios解决跨域问题

1、首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点 建议方式 在main.js中如下声明使用 import axios from ‘axios’; Vue.prototype.axios=axios;那么在其他vue组件中就可以this.axios=axios;那么在其他vue组件中就可以this.axios=axios; 那么在...

Derllk的博客 1296

axios中post请求出错,由于content-type引起的跨域的解决方法

在做一个登录页面时候,一个简单的post请求,发生了错误,错误提示如下: 这是由于content-type不同,所引起的跨域。 要知道:axios 的 content-type 是 application/json,jQuery 的 ajax 的 post 的 content-type 是 application/x-www-form-urlencoded。 解决方法:在serve.js(这

物以稀为贵yeah 4732
上一篇: 详解JavaScript中__proto__和prototype
下一篇: 深入理解JS原型及其扩展
遛狗的代码
博客等级 码龄11年 10粉丝 52原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值