前端跨域解决方案分析总结

本地前端代理连接服务器后端gateway api浏览器提示cors跨域,如何解决? ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏「Bug调优」,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个,您的支持就是我坚持写作分享知识点传播技术的最大动力。「猿圈奇妙屋」; 阅读详情

1.2 JS跨域请求

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。

1.3跨域调用测试

修改pinyougou-page-web 的itemController.js ,引入$http服务,修改addToCart方法

//添加商品到购物车

$scope.addToCart=function(){

$http.get('http://localhost:9107/cart/addGoodsToCartList.do?itemId='

+ $scope.sku.id +'&num='+$scope.num).success(

 function(response){

 if(response.success){

 location.href='http://localhost:9107/cart.html';//跳转到购物车页面

 }else{

 alert(response.message);

 }  

 }

);

}

测试后发现无法跨域调用

XMLHttpRequest cannot  load

http://localhost:9107/cart/addGoodsToCartList.do?itemId=112344&num=1. 

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9100' is therefore not allowed access. The response had HTTP status code 400.

1.4跨域解决方案CORS

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

请求过程如下图:

 

Preflight Request:

 

然后服务器端给我们返回一个Preflight Response

 

下面我们就开始动手,让我们的购物车工程能够接收跨域请求

(1)首先修改pinyougou-cart-web 的CartController.java的addGoodsToCartList方法,添加下面两句代码

response.setHeader("Access-Control-Allow-Origin", "http://localhost:9105");

response.setHeader("Access-Control-Allow-Credentials", "true");

Access-Control-Allow-Origin

Access-Control-Allow-Origin是HTML5中定义的一种解决资源跨域的策略。

他是通过服务器端返回带有Access-Control-Allow-Origin标识的Response header,用来解决资源的跨域权限问题。

 使用方法,在response添加 Access-Control-Allow-Origin,例如

Access-Control-Allow-Origin:www.google.com

也可以设置为 * 表示该资源谁都可以用

(2)修改pinyougou-item-web的itemController.js 

//添加商品到购物车

$scope.addToCart=function(){

$http.get('http://localhost:9107/cart/addGoodsToCartList.do?itemId='

+ $scope.sku.id +'&num='+$scope.num,{'withCredentials':true}).success(

function(response){

.......  

}

);

}

调用测试,可以实现跨域了。

CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。另一方面,开发者必须在AJAX请求中打开withCredentials属性。否则,即使服务器同意发送Cookie,浏览器也不会发送。或者,服务器要求设置Cookie,浏览器也不会处理。

1.5 SpringMVC跨域注解

springMVC的版本在4.2或以上版本,可以使用注解实现跨域, 我们只需要在需要跨域的方法上添加注解@CrossOrigin即可

@CrossOrigin(origins="http://localhost:9105",allowCredentials="true")

allowCredentials="true"  可以缺省

前端跨域难题:从原理到实战的完整解决方案 跨域问题是前端开发的核心挑战之一。本文深入解析同源策略机制及其保护范围,分析微前端架构和第三方API集成中的典型跨域场景。提供完整的跨域解决方案图谱,包括服务端的CORS配置、代理服务器方案,以及前端的JSONP和postMessage等技术。文章通过真实代码示例展示各种方案的实现细节,帮助开发者应对不同场景下的跨域需求。无论是开发环境配置还是生产环境部署,都能找到对应的解决方案。 阅读详情

相关推荐

【Anaconda】conda国内镜像源快速配置指南(清华/阿里云)

本文详细介绍了如何为Anaconda配置国内镜像源(清华/阿里云),以显著提升conda包下载速度并减少安装失败率。通过分步指南和实用技巧,帮助开发者快速完成配置,优化Python开发环境。

weixin_33725722的博客 1486

9种常见的前端跨域解决方案(详解)

文章转载自:9种常见的前端跨域解决方案(详解)_慕课手记 (imooc.com) 一、什么是跨域?   在前端领域中,跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能同源使用的限制。 什么是同源策略?   同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。   同源策略限

zh0623的博客 3万+

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 381

解决前端跨域的八种方案

解决跨域的八种实现方案 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。 那么如何实现跨域呢,以下是实现跨域的一些方法。 一、jsonp跨域 原理:script标签引入js文件不受跨域影响。不仅如此,带src属性的标签都不受同源策略的影响。 正是基于这个特性,我们通过script标签的src属性加载资源,数据放在src属性指向的服务器上,使用json格式。 由于我们无法判断script的src的加载状态,并不知道数据有没有获取完成,所以事先会定义好

weixin_43902063的博客 1万+

磁悬浮轴承控制策略设计及性能对比

摘要:针对高速磁悬浮转子控制问题,本文提出多方案对比分析。建立含陀螺效应的5自由度动力学模型,分析陀螺耦合、质量不平衡等关键挑战。对比四种控制策略:基础PID解耦、交叉反馈+自适应陷波、H∞鲁棒+前馈补偿、滑模控制+观测器,从实时性、鲁棒性等维度评估优劣。推荐采用交叉反馈+H∞+自适应陷波的混合方案,通过内环电流环与外环位置环协同,实现陀螺效应动态解耦和扰动抑制。实施步骤包括系统辨识、控制器设计、硬件部署等,需配合实验验证与参数整定。该方案综合性能最优,适用于高转速、强扰动场景。

技术工作者 1773

Zemax新手别慌!一文搞懂几何像差:从球差、慧差到色差的实战识别与优化

本文为Zemax新手提供几何像差实战指南,详细解析球差、彗差和色差的识别与优化方法。通过软件操作关键节点和实际项目决策逻辑,帮助光学设计师快速掌握像差诊断与优化技巧,提升光学设计效率。

weixin_42524708的博客 258

前端解决跨域问题( 6种方法 )

跨域问题是指当一个网页试图访问来自不同源(域名、协议、端口)的资源时,浏览器会出于安全考虑而限制这种访问`**。这是因为浏览器的同源策略防止了恶意网站获取其他网站的敏感信息。

大剑师兰特的GIS世界 4936

NDVI空间分布变化Slope趋势分析与F检验(自用)

1.NDVI数据预处理2.一元线性回归分析3.Slope趋势分析与F检验

什么都学亿点点的博客 9017

九种实用的前端跨域处理方案

九种实用的前端跨域处理方案

Jack, what else can you do besides holding your little darling? 2444

ANSYS二次开发:Python和ANSYS进行交互操作(PyAnsys库,DPF)

🎈ANSYS二次开发:APDL开发入门准备🎈- 🎈ANSYS二次开发:后处理使用APDL命令流解析结果文件🎈 🎈ANSYS二次开发:Python解析ANSYS结果文件(PyAnsys库)🎈 🎈ANSYS二次开发:Python操作ANSYS(PyAnsys库,PyDPF)🎈 文章目录1、简介2、安装2.1 ansys-mapdl-core2.2 pyaedt2.3 ansys-dpf-core2.4 ansys-dpf-post2.5 ansys-mapdl-reader2.6 G...

爱看书的小沐 2万+

基于MATLAB的井筒多相流模拟

井筒多相流的模拟可以基于不同的数学模型和计算方法。其中,最常用的模型之一是多相流模型,它基于质量守恒、动量守恒和能量守恒等原理,描述了流体在井筒中的流动行为。对于井筒多相流的模拟和分析可以帮助我们理解和优化油气田开发过程中的流体行为,从而提高产量和效率。在本文中,我们将介绍如何使用MATLAB进行井筒多相流的模拟,并提供相应的源代码。需要注意的是,以上示例是一个简化的模拟,仅用于演示如何使用MATLAB进行井筒多相流模拟。实际应用中,我们需要考虑更多的物理过程和参数,并使用更复杂的数值方法和模型进行模拟。

AtdiHtml的博客 706

前端处理跨域的九种方式(超级详细)

指一个域下文档或者脚本去请求另一个域下的资源,这里的跨域是广义的;同源策略(Same origin policy),简称SOP,是一种约定,它由Netscape公司1995年引入浏览器,它是浏览器核心也是最基本的安全功能,如果缺少同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指“协议+ 域名+ 端口”三种相同;

贫僧法号依平 2万+

基于四旋翼模型的火箭型无人机视线角保持控制仿真设计

本文针对火箭型无人机的视线角保持控制问题展开研究。基于四旋翼动力学模型,通过改造设计了一种摄像头朝上安装的特殊无人机系统,用于追踪空中目标。文章详细推导了坐标系定义、运动学和动力学方程,重点分析了摄像头安装与视线几何关系,建立了目标运动模型和视线向量计算方法。通过解算期望姿态角,实现了使机体Z轴始终对准目标的控制目标。仿真结果表明,该系统能有效完成视线角保持任务,为空对空监视等应用场景提供了可行方案。~~~~~

huanghm88的专栏 140

前端网络之【浏览器跨域问题分析与解决方案】

本文主要介绍了,在前端开发浏览器环境中,触发跨域的几种原因,以及针对不同的原因,提出不同的解决方案分享。

如果巅峰留不住,那就重走来时路! 1547

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

九种常见的跨域解决方案(详解)

在前端领域中,跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能同源使用的限制。同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

前端工程师 · Vue 生态深耕者,专注多端与工程化 2万+

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

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

别挣扎了!前端跨域问题解决方案大揭秘:CORS、JSONP、代理服务器对比分析

跨域问题的解决方案多种多样,每种方案都有其优缺点。CORS是最推荐的解决方案,因为它既安全又标准。但在某些特定情况下,JSONP和代理服务器也能大显身手。选择哪种方案,就看你的项目需求和个人偏好了。记住,前端的世界里,没有解决不了的问题,只有找不到答案的开发者。好了,关于跨域问题的解决方案,今天就聊到这里。别挣扎了,选择一种方案,勇敢地去实现它吧!

zhaodash97的博客 395

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

前端跨域解决方案总结

前端跨域解决方案总结一、什么是跨域?二、为什么会产生跨域三、常见的跨域场景四、9种跨域解决方案1、JSONP跨域1、概述2、实现流程3、jsonp简单实现1)、原生JS实现2)jquery Ajax实现:3)Vue axios实现:4)、后端node.js代码:2、跨域资源共享(CORS) 一、什么是跨域? 在前端领域中,跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能同源使用的限制。 二、为什么会产生跨域 因为浏览器内部有一种约定叫做同源策略它是浏览器最核心也最基本的安全功能,如果缺少了同源

丑小鸭变黑天鹅的博客 5217

如何解决前端跨域问题:从CORS到JSONP

如何解决前端跨域问题:从CORS到JSONP

商务合作欢迎私信我 1万+

spring security 如何解决跨域的

介绍了什么是跨域请求,传统web开发如何解决,springsecurity 如何解决方案,包含原理实现

冬阳 2242

跨域以及解决方案

在前端领域中,跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能同源使用的限制。同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

打工人 901

面试:前端怎么解决跨域问题

前端怎么解决跨域问题

太阳与星辰的博客 2194

前端跨域问题解析和解决方法

本篇文章将深入介绍前端跨域问题,包括什么是跨域、跨域产生的原因、常见的跨域解决方案,同时还会讲解每种跨域解决方案的优缺点。JSONP的原理是利用script标签可以跨域访问数据的特性,通过在URL中添加回调函数的参数,让服务端返回一段指定的 JS 代码,并在客户端中执行该代码。代理的原理是使用ajax向自己的服务器发起请求,服务器拿到请求后再利用语言本身的http库向对方服务器发起请求,拿到数据后,再返回给前端。同源策略是一种安全策略,它规定了不同源之间的脚本和文档之间的交互是被禁止的。

weixin_42429220的博客 1233

前端跨域的原则

前端跨域的原则与避免途径 1.跨域   跨域资源共享(Cross-Origin Resource Sharing, CORS)是为解决 Ajax 技术难实现跨域问题而提出的一个规范,这个规范试着从根本上解决安全的跨域资源共享问题。 2.option请求   option请求是一种探测性的请求,通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要的措施。 3.跨域解决方案   若要允许跨域,传统的解决方案是服务器端设置 Access-Control-Allow-Origin: *,但是这是

kestiny的专栏 540

解决后端限制导致前端配置跨域仍请求失败报504的问题

当然,并不是端口号一致就可以绕过跨域,还需要添加其他配置,比如前端请求需要发送带有application/vnd.api+json头部信息,这样服务器就就可以将 Access-Control-Allow-Headers 设置为 application/vnd.api+json,客户端在跨域请求中就包含这个头部信息。

weixin_43883615的博客 1579

8种超详细Web跨域解决方案

一、什么是跨域 当a.qq.com域名下的页面或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为。跨域的定义从受限范围可以分为两种,广义跨域和狭义跨域。 (一)广义跨域 广义跨域通常包含以下三种行为: 资源跳转:a链接、重定向。 资源嵌入:<link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链。

JineD的博客 2万+
上一篇: SpringBoot框架个人总结学习
下一篇: 静态代码块总结
gbcxnull
博客等级 码龄8年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值