记录两个不同的域名使用同一个微应用遇到的坑(micro-app)

news2024/9/24 19:17:03

由于公司的项目越来越多,很多的系统,也有很多相似的模块,为了解决重复造轮子,降低开发维护成本,故将这些抽出来单独作为微应用。经过调研,发现某东出品的micro-app比较吻合。使用过程省略。

在多个项目,同一个域名下 使用同一个微应用是正常的,但是突然某一天,增加了另外一个域名,在同一个浏览器种,先打开A域名,A域名的网站是正常的,然后再打开B域名,B域名引入的微应用就报错了,提示微应用的资源加载出现了跨域问题,如下:
在这里插入图片描述

原因

A域名加载了微应用的资源后,浏览器进行了缓存,但是当访问B域名的时候,B域名加载微应用的时候,直接是读取的A域名下的浏览器缓存后的微应用,就会出现条件型 CORS 响应下因缺失 Vary: Origin 导致的缓存错乱问题。

普及2个慨念:

无条件型 CORS 响应

将Access-Control-Allow-Origin固定写死为*(允许任意网站访问)、或者特定的某一个源(只允许这一个网站访问),不论请求头里的 Origin是什么,甚至没有 Origin也一样返回那个值。

条件型 CORS 响应

条件型 CORS 响应又分为两种情况:

  1. 区分对待有无 Origin请求头

有Origin请求头才会返回Access-Control-Allow-Origin响应头,没有就不返回。

  1. 区分对待不同的 Origin请求头

如果想允许特定的某些个网站访问自己的资源,由于Access-Control-Allow-Origin被设计为不支持返回多个源,这就需要根据 Origin请求头的值来动态的判断出要不要加 Access-Control-Allow-Origin了。

比如我们想只允许 *.baidu.com 下的页面访问,当接受到的请求包含 Origin: https://a.baidu.com时,需要返回 Access-Control-Allow-Origin: https://a.baidu.com;当接受到的请求包含Origin: https://b.baidu.com时,需要返回 Access-Control-Allow-Origin: https://b.baidu.com;当接受到的请求包含 Origin: https://a.baidu.com时,就不返回Access-Control-Allow-Origin头了。

经过分析原因,所以找到处理方案:

解决方案:

在A域名下的 https://a.baidu.com服务端设置:

Access-Control-Allow-Origin: https://a.baidu.com
Vary: Origin

在B域名下的 https://b.baidu.com服务端设置:

Access-Control-Allow-Origin: https://b.baidu.com
Vary: Origin

这样就就可以正常使用了,即使不同的域名使用同一个微应用,各自的域名取各自的缓存,即使是调用同一个域名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana 配置告警 配置 dubbo windows_exporter 报告页面图 其他公共报告可参考相近

目录 安装部署 官网下载 配置中文 启动 访问 账户密码 界面效果 图表操作 新建添加仪表 添加 Prometheus 数据源 导入已有报告示例 下载 windows_exporter Grafana 的图表模板 node_exporter 中文版:windows_exporter for Prometheus Dashboard CN v2…

2023年全网最全接口自动化测试框架搭建,没有之一

一、原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUtils工具类 测试用例管理使用了testNg管理,使用了TestNG参数化测试,通过xml文件来执行case。 测试报告这里用到第三方的包ReportNG 项目组织用Maven 二、准备 使用工具&am…

期货和现货白银的区别

白银期货和现货白银既有区别,也有联系,它们二者都是以银价跟跟踪对象的保证金交易品种,因此都具有一定的杠杆效应,都可以双向操作,但是它们在交易制度、时间、杠杆水平等诸多方面,都存在明显的区别。 投资者…

为什么你总学不会编程?到底差什么?

为什么你总学不会编程?到底差什么? 笔者看到太多太多的人花上钱、耗费一两年的时间都学不会编程,甚至一门C语言都反反复复学不完、学不会,游走在大门边缘,总是入不了门,到底是什么因为什么? 因…

020、数据库管理之数据导出工具(Dumpling)

Dumpling dumpling详解dumpling介绍dumpling架构与特点dumpling 适用场景dumpling的部署dumpling 所需权限dumpling 导出SQL文件dumpling 导出csv文件对导出数据进行筛选导出数据的格式导出数据的一致性dumpling 性能优化 实验导出TiDB 数据库中的单张表和单个库导出mysql数据库…

tomcat接入skywalking

tomcat接入skywalking 一、说明二、步骤2.1 准备java-agent包2.2 tomcat部署2.2.1 下载2.2.2 tomcat修改catalina.sh文件2.2.3 tomcat修改启动端口2.2.4 启动tomcat 三、验证四、问题排查4.1 tomcat的启动日志 一、说明 服务器中已经运行着skywalking,准备在同一台…

【Jmeter教程】_设置请求的参数

目录 一、Jmeter传参 二、区分参数格式 在做接口测试时,发送请求的参数有两种格式,一种是Parameters,一种是JSON 一、Jmeter传参 Jmeter 传Parameters格式的参数 Jmeter 传JSON格式的参数 二、区分参数格式 在不清楚参数到底是何种格式时…

使用Arthas查看JDK代理源码

【README】 本文总结自黑马程序员-设计模式,老师讲的非常棒; 【1】jdk代理案例 卖票接口 public interface SellTickets2 {void sell(); }火车站 public class TrainStation2 implements SellTickets2 {Overridepublic void sell() {System.out.prin…

Vulnhub: DarkHole:1靶机

kali:192.168.111.111 靶机:192.168.111.130 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 访问目标web网站,注册用户 注册时尝试注册用户名为admin的用户,发现存在该用户 进入用户后台&…

孪生网络:图片相似度对比神器

本文来自公众号“AI大道理” ​ Siamese Network(孪生网络)很早就被发明了,它的作者是著名的卷积神经网络LeNet-5的作者LeCun。 最早用来从相似图片数据集上学习图片表示的网络结构就是siamese网络。 两幅图通过两个共享权重的CNN得到各自…

【Redis】Redis简介及安装部署

Redis简介及安装部署 1.关系数据库 VS 非关系型数据库1.1 关系型数据库1.2 非关系型数据库1.3 关系型数据库和非关系型数据库区别1.4 非关系型数据库产生背景1.5 关系型数据库与非关系型数据库总结 2.Redis简介2.1 Redis概述2.2 Redis的优点2.3 Redis使用场景2.4 关于Redis的高…

一步一步学OAK之一: Hello World(使用DepthAI Python API 显示彩色视频流)

作为编程世界的传统入门仪式,我们这里也以Hello World来命名我们的第一个项目,其实我们这个项目与Hello World没有半毛钱关系。 在这个程序中,我们使用DepthAI Python API来一步步实现显示OAK相机彩色视频流,并捕捉物体的功能 目…

CSS 仿 -webkit-box-reflect 属性实现 图片 镜面 倒影 效果

背景 最近在支付宝小程序上面要实现图片的镜面倒影效果,于是乎,马上找到了-webkit-box-reflect属性,用上之后真的绝绝子,模拟器上也很完美,可是到真机上一看,iOS 不支持,只有安卓手机支持&…

基于web的家校联系平台的设计与实现(源码+文档+PPT+数据库)

以 web为基础、以 Java SSM (springmvc mybatis mysql)为框架、以spring, springmvc, mybatis, bootstrap, JSP, jquery为主要技术来完成一个家庭与学校之间的联系。在框架下进行开发,管理员可以在后台输入信息、管理信息,设置网站信息,管理和…

【FFmpeg实战】H264 NALU分析

视频序列 宏块结构 NALU分层 H264的主要目标是为了有高的视频压缩比和良好的网络亲和性,为了达成这两个目标,H264的解决方案是将系统框架分为两个层面, VCL(视频编码层)和 NAL(网络提取层). VCL:包括核心压缩引擎和块&#xff…

[数据分析与可视化] 基于matplotlib-scalebar库绘制比例尺

matplotlib-scalebar是一个Python库,用于在matplotlib图形中添加比例尺。它允许用户指定比例尺的大小、位置、字体和颜色,以及比例尺的单位。该库支持不同的比例尺单位,例如米、英尺、英寸等。matplotlib-scalebar安装命令如下: p…

王道考研计算机网络第三章知识点汇总

3.1数据链路层功能概述: 3.2封装成帧和透明传输 重点理解透明传输的概率:可以形象地理解为小秘没有权限打开这5份文件 字符计数法如果其中一个计数字段出差错那么后续字段全部都错误,将会导致灾难性的错误。 字符填充法相当于编程时在/前面再…

JsFu0k批量探测JS存在的敏感关键字

这是一个演示 GitHub地址:https://github.com/jumppppp/go/tree/master/htools/jsfu0k 输出窗口 输出的详细文件 以上演示的是全字匹配 这个自动化工具模仿人工在一个网页内进行寻找js中敏感信息 流程: 填写配置(输入批量域名&#xff0…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第九天 9/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…