axios代理跨域 cli4_Cross-Origin Resource Sharing (CORS)-跨域

说起"跨域",大家肯定感觉既熟悉又陌生,因为自己可能有些印象,但是具体说说又说不太清楚,我前段时间也是遇到了这个问题,就此来总结下。

出现问题的场景:

我们有一个后台管理系统,使用的技术是vue(iview)+axios+springmvc,在本地访问没有问题,到了生产环境报了跨域的错,报错信息如下:

cors enable in Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response

其实我们在前后端都做了跨域相关的配置,按理说没有什么问题,我最开始也是直接拿着报错信息各种百度、谷歌,发现优质的帖子真的很好,修改了一次又一次,一直都无法解决,后来系统的看了下跨域的知识,又联系我们现在遇到问题的场景终于解决了问题,我把我排查问题的全流程分享下,希望对遇到类似问题的伙伴有帮助。

伴随着上述报错信息,还有一个现象,就是浏览器在请求后端接口的时候,会发送两个请求,一个options请求,一个post请求,options请求成功,post请求没有发起,带着上述问题我们先了解下跨域的基础知识。

86b45b184a6d80ce1a1e1f4d6a8079e2.png

什么是跨域:

  1. 跨域指浏览器不能执行其他网站的脚本,它是由浏览器的同源策略引起的,是浏览器对JS的安全限制。
  2. 同源策略是指协议、域名、端口都要相同,任一不同都会发生跨域问题。服务器之间可以相互请求数据,不存在跨域的问题。

如何解决跨域:

1.前端解决跨域

配置一台代理服务器,通过代理服务器请求其他服务器,返回结果到代理服务器然后再给到浏览器,一般会使用nigix做代理服务器。

2.前后端解决跨域

前端配置:

axios.defaults.withCredentials = trueaxios.defaults.crossDomain = true

后端配置:

5ba79d1a24b56d4a8d8533a27d0291c9.png

现在回来看看我遇到的那个问题,前端调用如图:

发起一个option请求,目的在于看后端服务器是否支持请求中的headers、methods。

636ca23c2e44fbf41a04c0fdaa497e77.png
d643ca4d702f3252850fa2c188552eec.png
0d5c52fb0ec25fa2ada5db9400d856d0.png

以上相应中返回后端支持的类型,如果包括你请求时的参数,那么浏览器会发起第二次post真实请求,我之前就是在后端过滤器配置了*,但是没有生效,枚举出来headers、methods就可以通过跨域。

很经典的一张图:

c007c2d086443ee3e96ab954d6f5258b.png

如果你想了解更多的跨域知识,请查看官网https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS,如果你也遇到了类似的问题,欢迎留言一起讨论。

更多请关注公众号:别明天就今天吧

Java电商项目实战:Spring Boot+Vue高并发避坑指南 电商系统是Java全栈开发的核心练兵场,涉及用户认证、缓存一致性、分布式事务、前后端协同与多环境部署等关键工程能力。本文围绕仿小米商城这一典型场景,深入剖析Spring Boot与Vue集成中的真实痛点:CORS跨域的本质与分层治理、SSM向Spring Boot迁移时MyBatis配置冲突、Redis与MySQL双写一致性的延迟双删+补偿机制、前端路由守卫与后端RBAC权限的分层校验协同、Maven多模块下Profile激活失效的根因与标准化方案。聚焦可落地的硬核实践,覆盖从本地开发到CI/CD上线的完整 阅读详情

相关推荐

vue中axios实现数据交互与跨域问题

主要介绍了vue中axios实现数据交互与跨域问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下

axios的全局配置

import axios from ‘axios’; export default()=>{ let loadingInstance; //创建Loading 的实例 axios.defaults.baseURL = appConfig.xhr.baseURL; // 配置axios请求的地址 axios.defaults.headers.post[‘Content-Type’] = ‘application/json; charset=utf-8’; axios.defaults.crossDoma

qq_39097240的博客 1237

浙江大学Fast-Lab从0制作自主空中机器人公开课教程补充及部分注意事项(适用于ubuntu系统和ROS零基础)

浙江大学Fast-Lab从0制作自主空中机器人公开课纯萌新补充(适用于从没接触过ubuntu系统),记录了一些自己不会的地方以及踩过的坑

qq_39986834的博客 2986

axios全局配置及拦截器

axios 全局配置: //axios-init.js import axios from 'axios'; let loadingInstance; //创建Loading 的实例 axios.defaults.baseURL = appConfig.xhr.baseURL; // 配置axios请求的地址 axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';

LiJiaJun0001的博客 1778

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 765

如何在项目中集成bpmn-process-designer

文章目录一、bpmn-process-designer是什么?二、使用步骤1.将下面地址的代码下载到本地2.替换dependencies和devDependencies3.拷贝package目录4.在main.js引入代码5.拷贝src5.拷贝App.vue代码注意事项 一、bpmn-process-designer是什么? bpmn-process-designer是一个基于 bpmn.js,Vue 2.x 和 ElementUI 开发的流程设计器(前端部分),支持监听器,扩展属性,表单等配置,可自由扩展

weixin_43550766的博客 9454

请求的crossDomain和withCredentials字段

axios请求头种不携带withCredentials字段会出现跨域错误。

AM1n98的博客 895

四自由度机械臂Matlab仿真全流程:从DH参数建模到轨迹规划实战

本文详细介绍了四自由度机械臂在Matlab中的完整仿真流程,从DH参数建模到轨迹规划实战。通过Robotics Toolbox工具,读者可以学习如何构建机械臂模型、验证运动学特性,并实现平滑的轨迹规划。文章还提供了性能优化技巧和常见问题解决方案,帮助开发者高效完成机械臂仿真项目。

weixin_29061041的博客 239

axios在uniapp中的使用

axios在uniapp中的使用 稻草人_9ac7 2020.07.24 20:30:29 // service.js文件 import Vue from 'vue' import axios from 'axios' let baseURL = 'http://192.168.0.184:4001/user/' const service = axios.create({ withCredentials: true, crossDomain: true, baseURL,

ybyshezhang的博客 3640

ABA分析方法 — 软硬件开发必备的一种分析问题绝佳套路

可能你从很多地方听过这个名词,无论是在软件开发还是硬件领域(比较典型的领域:汽车、消费电子、医疗等行业),ABA验证都是一种快速分析故障的一个方法,第一次听到这个词,当时是不是一脸懵逼,本文就深度带你了解下ABA的分析方法。简要概述就是:怀疑A模块导致系统故障,将B模块替换A模块,故障消失,再将A模块替换回来,故障复现,则说明A模块是导致系统故障的原因其实,ABA分析问题,可能很多人在工作中都或多或少用过这个方法,只是没有这个概念,说明白了就是控制变量和对比验证,没什么高大上的东西。

Eureka1024的博客 7343

05-SA8155 QNX Display框架及代码分析(1)

显示是非常重要的一个模块,人机交互的桥梁。那么SA8155 Hypervisor显示是如何处理的呢。对处理流程非常的好奇O(∩_∩)O哈哈~。TODO。

静虚待令,有物混成 1万+

二次封装axios,以及各个环境基础路径的使用

【代码】二次封装axios。

weixin_46041322的博客 559

基于ADS1299的8通道脑电采集系统硬件设计实战

生物电信号采集是医疗电子与可穿戴设备中的关键环节,微弱信号的高保真放大与数字化处理直接影响系统性能。高精度模数转换器与低噪声模拟前端设计成为工程实践的核心。ADS1299作为专用生物电测量芯片,集成多通道低噪声放大器与24位Δ-Σ ADC,广泛应用于脑电、心电等生理信号检测。本文基于ADS1299构建8通道脑电采集系统,详细阐述硬件架构、电源与参考设计、输入保护、PCB布局布线、固件SPI配置及数据读取,并结合实测数据分享噪声抑制与调试经验,为EEG采集设备开发提供完整参考。

weixin_29169505的博客 225

一小时搭建SpringBoot+Vue在线考试系统:从零到部署的完整实战

在Java Web开发领域,SpringBoot作为简化配置、快速构建微服务的核心框架,与Vue.js这一渐进式前端框架的结合,构成了当前企业级应用开发的主流技术栈。这种前后端分离的架构模式,通过RESTful API进行通信,实现了职责清晰、并行开发和易于维护的技术价值,广泛应用于管理系统、电商平台等复杂业务场景。其中,基于JWT的认证授权和MyBatis-Plus的高效数据操作是保障系统安全性与开发效率的关键技术。本文聚焦于在线考试管理系统这一典型应用,手把手演示如何整合这些技术,快速构建一个具备用户管

weixin_34236869的博客 424

以 DeleteRestrictions 与 inlineDelete 为核心的 Fiori Elements 表格删除机制全解

SAP Fiori elements 中删除操作的设计与实现涉及多维度考量。框架默认依据 OData 元数据判断删除能力,通过 DeleteRestrictions 注解实现行级条件控制(deletable-path)。表格支持两种删除模式:工具栏集中删除与响应式表格行内删除,但二者不建议混用。关键约束包括:行内删除仅适用于 Responsive Table,且与多选功能互斥。配置需遵循三层架构:后端能力注解、前端表格形态和运行时交互。设计上强调禁用优于隐藏的可用性原则,并需保持列表页与对象页的删除体验一致

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 153

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

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

新版vue/cli创建项目中解决axios跨域CORS问题

本地开发环境中使用axios调用远程服务器api接口出现下面的错误: Access to XMLHttpRequest at ‘https://api.xxx.xxx/xx’ from origin ‘http://localhost:8081’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is...

Dexter's Laboratory 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

跨域问题?无需担心!学习如何解决 Axios 的跨域限制

Axios 跨域常用的解决方法有 CORS、JSONP、代理等,开发环境可通过代理服务器实现跨域,CORS 需要服务端设置 Access-Control-Allow-Origin 响应头,JSONP 只支持 GET 请求。选择适合项目需求的解决方案能够很好地解决跨域问题,保障应用的正常运行。这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

2301_78843735的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Axios(二)

111

Bella.的博客 1612

vue中axios请求不能保存接口返回的cookie

axios保存cookie

qq_45396650的博客 623

axios 跨域传参_axios跨域问题

1.我在main.js中设置了axios.defaults.withCredentials=trueaxios.defaults.crossDomain=trueaxios.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded'在其他组件用的时候一旦带参数例如:self.axios.post('http...

weixin_29491635的博客 1875

axios踩坑,不同版本默认Content-Type不同

1、请求封装 2、问题 axios 0.21源码 axios 1.2源码 总结

全网同名:PBitW,更多内容,可以搜索《普通前端进阶记》 5955

前端常见跨域解决方案(全)

什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源嵌入: <link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@f...

weixin_34281537的博客 2412

VUE axios POST 发送跨域 cros 问题

VUE axios POST 发送跨域 cros 问题

wgchen 1594

请求跨域问题:CORS(Cross-Origin Resource Sharing)

出于浏览器的同源策略限制。 所谓同源(即指在同一个域)就是两个地址具有相同的协议(protocol)、主机(host)和端口号(port) 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 www.jd.com:8080 与 www.jd.com:8081 二级域名不同 ..

xinyihhh的博客 1363

Axios发送异步请求解决跨域问题

前后端分离,vue配置axios的动态代理解决跨域

qq_55272229的博客 1420

axios的设置和用法

vue.config.js module.exports = { devServer: { proxy: { 'api': { target: 'http://111.229.37.167/', changeOrigin: true, } } } } main.js import { createApp } from 'vue' import Ap

weixin_40945354的博客 229
上一篇: php 赵亚飞_php常用判断的函数
下一篇: 权重矩阵最小路径_Barra 协方差矩阵的 Eigenfactor 调整
乐正昶
博客等级 码龄8年 37粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值