【 HTML 及浏览器 】前端跨页面通信
前端跨页面通信:连接分散界面的纽带
在构建复杂的前端应用时,我们常常需要在不同的页面之间进行数据通信。无论是同源页面还是非同源页面,通信机制都是实现多页面数据同步和交互的关键。本文将探讨各种前端跨页面通信的方法,并提供最佳实践指南。
1. 本地存储机制(LocalStorage/SessionStorage)
特点
- 同源策略:只能在相同的源(协议、域名和端口)之间共享数据。
- 简单易用:API简单直观,容易上手。
- 存储限制:通常有5MB的存储限制。
实现方式
- 页面A存储数据:
localStorage.setItem('key', 'value');
- 页面B监听存储事件:
window.addEventListener('storage', function(event) {if (event.key === 'key') {console.log('New Value: ' + event.newValue);}
});
最佳实践
- 使用封装好的函数来处理复杂数据结构的序列化和反序列化。
- 适合非敏感数据的存储,因为数据存储在本地。
2. Cookie
特点
- 跨域共享:可以配置跨域共享Cookie。
- 限制多:每个cookie大小限制在4KB左右,且每个域下cookie的数量也有限制。
实现方式
- 页面A设置Cookie:
document.cookie = "key=value; path=/; domain=yourdomain.com";
- 页面B读取Cookie:
let value = document.cookie.replace(/(?:(?:^|.*;\s*)key\s*\=\s*([^;]*).*$)|^.*$/, "$1");
最佳实践
- Cookie应用于需要服务器读取的少量数据的存储。
- 注意安全性,对敏感数据进行加密处理。
3. WebSockets
特点
- 全双工通信:允许同时进行双向通信。
- 实时性:适合需要实时数据更新的应用。
实现方式
- 页面A和页面B都连接相同的WebSocket服务器:
let socket = new WebSocket('ws://yourwebsocketserver.com');
- 发送消息:
socket.send('Your message');
- 接收消息:
socket.onmessage = function(event) {console.log('New Message: ', event.data);
};
最佳实践
- 适用于需要高实时性的通信场景,如在线游戏、聊天应用。
- 保证WebSocket服务器稳定性和安全性。
4. Broadcast Channel API
特点
- 同源页间通信:允许同一浏览器实例中的不同页面间通信。
- 简单的API:API简单,易于理解和使用。
实现方式
- 页面A创建和发送消息:
let channel = new BroadcastChannel('channel_name');
channel.postMessage('Message from A');
- 页面B监听消息:
let channel = new BroadcastChannel('channel_name');
channel.onmessage = function(event) {console.log('Received Message: ', event.data);
};
最佳实践
- 适合同源页面间的简单消息传递。
- 需要考虑兼容性,不是所有浏览器都支持。
5. Window.postMessage
特点
- 跨域安全通信:可用于不同源之间的窗口通信。
- 安全性:可以通过
origin和source属性验证消息来源。
实现方式
- 页面A发送消息:
windowB.postMessage('Message', 'http://yourdomain.com');
- 页面B监听消息:
window.addEventListener('message', function(event) {if (event.origin !== 'http://yourdomain.com') return;console.log('Received Message: ', event.data);
});
最佳实践
- 适用于iframe或打开的新窗口的父子通信。
- 验证消息来源,确保通信安全。
结论
前端跨页面通信是多页面应用中不可或缺的部分。掌握不同的通信方式和最佳实践可以帮助开发者构建出既高效又安全的应用。在选择通信方式时,要考虑应用的具体需求,如同源策略、实时性、安全性、数据大小和存储方式等因素,并结合现代前端框架和库提供的抽象层,以保证企业级解决方案的稳定与可维护性。
相关文章:
【 HTML 及浏览器 】前端跨页面通信
前端跨页面通信:连接分散界面的纽带 在构建复杂的前端应用时,我们常常需要在不同的页面之间进行数据通信。无论是同源页面还是非同源页面,通信机制都是实现多页面数据同步和交互的关键。本文将探讨各种前端跨页面通信的方法,并提…...
内存安全的编程语言
美国政府新颁布《回归基础构件:通往安全软件之路》 《回归基础构件:通往安全软件之路》中,白宫国家网络主任办公室(ONCD)呼吁开发者使用「内存安全的编程语言」 内存安全的编程语言 根据NSA的建议,内存…...
Excel常用公式总结非常实用
16个最实用的Excel万能公式 1、多条件判断 IF(And(条件1,条件2..条件N),条件成立返回值) IF(or(条件1,条件2..条件N),条件成立返回值) 2、多条件查找 Lookup(1,0/((条件1*条件2*...条件N)),返回值区域) 3、多条件求和 Sumifs(值区域,判断区域1,条件1,判断区域2,条…...
window路径特殊字符解决
官方定义命名规范 https://learn.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file 重点 1.目录规范 特殊字符以空格 与点.开头结尾 2.文件规范 特殊字符以空格 与点.开头结尾NUL、COM等文件 解决方案 字符标点符号实际上在字符集定义中有一个很有趣的现象&…...
『大模型笔记』RAG 系统开发中的12大痛点及解决方案
RAG 系统开发中的12大痛点及解决方案 文章目录 问题引入一. 痛点 1:缺失内容1.1. 数据清洗的重要性1.2. 精心设计的提示(Prompt)有助于提高准确性二. 痛点 2:关键文档被遗漏2.1. 通过调整 chunk_size 和 similarity_top_k 参数优化检索效果2.2. 检索结果的优化排序三. 痛点…...
VScode---php环境搭建
文章目录 1.下载php Dehug;php server2.下载php环境3.配置环境变量5.配置php.ini文件6.设置vscode6.测试遇到的问题 1.下载php Dehug;php server 2.下载php环境 下载地址:https://www.php.net/downloads.php 3.配置环境变量 C:\Users\hacker>php -v PHP 8.3.3 (…...
【Vue3】3-6 : 仿ElementPlus框架的el-button按钮组件实
文章目录 前言 本节内容实现需求完整代码如下: 前言 上节,我们学习了 slot插槽,组件内容的分发处理 本节内容 本小节利用前面学习的组件通信知识,来完成一个仿Element Plus框架的el-button按钮组件实现。 仿造的地址:uhttps://…...
.datastore@cyberfear.com.mkp勒索病毒的最新威胁:如何恢复您的数据?
导言: 我们享受着数字化带来的便利,但同时也要面对不断演进的网络威胁。最近出现的 .datastorecyberfear.com.mkp、[hendersoncock.li].mkp [hudsonLcock.li]、.mkp [myersairmail.cc].mkp 勒索病毒就是其中之一,它对我们的数据安全构成了…...
23.基于springboot + vue实现的前后端分离-在线旅游网站系统(项目 + 论文PPT)
项目介绍 本旅游网站系统采用的数据库是MYSQL ,使用 JSP 技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 技术选型 后端: SpringBoot Mybatis 数据库 : MyS…...
SpringCloud-RabbitMQ消息模型
本文深入介绍了RabbitMQ消息模型,涵盖了基本消息队列、工作消息队列、广播、路由和主题等五种常见消息模型。每种模型都具有独特的特点和适用场景,为开发者提供了灵活而强大的消息传递工具。通过这些模型,RabbitMQ实现了解耦、异步通信以及高…...
Linux网络编程 ——UDP 通信
Linux网络编程 ——UDP 通信 1. UDP1.1 UDP 通信1.2 广播1.3 组播(多播) 2. 本地套接字 1. UDP 1.1 UDP 通信 输入 man 2 sendto 查看说明文档 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(int sockfd, const void *buf…...
TDengine 签约树根互联,应对“高基数”难题
近日,树根互联与涛思数据达成签约合作,共同推动智能制造领域的建设。作为一家处于高速发展期的工业互联网企业,树根互联将新一代信息技术与制造业深度融合,开发了以自主可控的工业互联网操作系统为核心的工业互联网平台——根云平…...
实名制交友-智能匹配-仿二狗交友系统-TP6+uni-APP小程序H5公众号-源码交付-支持二开!
一、代码风格 通常不同的开发者具备不同的代码风格,但为了保证语音交友系统开发质量,在编码前需要进行代码风格的统一,通过制定一定的规则,约束开发者的行为。具有统一风格的代码才能更清晰、更完整、更容易理解、更方便后期维护…...
在CentOS上使用Gunicorn和systemd完整部署Flask应用:详细指南
在现代Web开发中,选择合适的技术栈对于确保应用的稳定性、性能和易于管理至关重要。本篇博客将深入探讨如何在CentOS系统上利用Flask、Gunicorn和systemd的强大组合来部署Web应用。这个全面的流程不仅包括应用的创建和运行,还涉及到如何利用系统服务来管理应用的生命周期,确…...
【信息系统项目管理师】--【信息技术发展】--【新一代信息技术及应用】--【人工智能】
文章目录 第二章 信息技术发展2.2 新一代信息技术及应用2.2.5 人工智能1.技术基础2.关键技术3.应用和发展 第二章 信息技术发展 信息技术是在信息科学的基本原理和方法下,获取信息、处理信息、传输信息和使用信息的应用技术总称。从信息技术的发展过程来看ÿ…...
注意力机制(代码实现案例)
学习目标 了解什么是注意力计算规则以及常见的计算规则.了解什么是注意力机制及其作用.掌握注意力机制的实现步骤. 1 注意力机制介绍 1.1 注意力概念 我们观察事物时,之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物…...
全量知识系统问题及SmartChat给出的答复 之8 三套工具之3语法解析器 之1
Q19. 问题 : 解释单词解释单词occupied 的字典条目 (word-def occupiedinterest 5type EBsubclass SEBtemplate (script $Demonstrateactor nilobject nildemands nilmethod (scene $Occupyactor nillocation nil))fill (((actor) (top-of *actor-s…...
软考59-上午题-【数据库】-小结+杂题
一、杂题 真题1: 真题2: 真题3: 真题4: 真题5: 真题6: 真题7: 真题8: 二、数据库总结 考试题型: 1、选择题(6题,6分) 2、综合分析题…...
【ARM Trace32(劳特巴赫) 高级篇 21 -- SystemTrace ITM 使用介绍】
文章目录 SystemTrace ITMSystemTrace ITM 常用命令Trace Data AnalysisSystemTrace ITM CoreSight ITM (Instrumentation Trace Macrocell) provides the following information: Address, data value and instruction address for selected data cyclesInterrupt event info…...
Python系列(20)—— 循环语句
Python中的循环控制语句 一、引言 在Python编程中,循环是重复执行一段代码直到满足特定条件的基本结构。Python提供了多种循环控制语句,如For 和While ,以及用于控制循环流程的辅助语句,如Break、Continue和Pass。这些语句的组合…...
细节见真章:JamTools 聚合工具的用户体验设计与实践
在软件市场竞争日益激烈的今天,用户体验已经成为决定软件成败的关键因素之一。 一款软件,无论功能多么强大,如果用户体验不好,就很难获得用户的认可。 JamTools 作为一款免费开源的聚合工具软件,不仅在功能上满足了用户…...
掌握N_m3u8DL-RE:跨平台流媒体下载工具全攻略
掌握N_m3u8DL-RE:跨平台流媒体下载工具全攻略 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 一、基…...
XCOM 2模组管理终极解决方案:Alternative Mod Launcher全攻略
XCOM 2模组管理终极解决方案:Alternative Mod Launcher全攻略 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mi…...
打卡信奥刷题(3064)用C++实现信奥题 P6871 [COCI 2013/2014 #6] HASH
P6871 [COCI 2013/2014 #6] HASH 题目背景 Mirko 正在研究一个哈希函数。 题目描述 此哈希函数如此定义: f(NULL)0f(\rm{NULL})0f(NULL)0f(aisi)((f(si)33)xorord(ai))modMODf(a_is_i)((f(s_i)\times33)\operatorname{xor}\ \operatorname{ord}(a_i))\bmod …...
RePKG:Wallpaper Engine资源处理解决方案实战指南
RePKG:Wallpaper Engine资源处理解决方案实战指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 一、资源处理的痛点与挑战 在Wallpaper Engine动态壁纸的定制与开发过…...
3分钟免费搞定Figma全界面汉化:设计师必备的中文插件终极指南
3分钟免费搞定Figma全界面汉化:设计师必备的中文插件终极指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾经因为Figma的全英文界面而感到困扰?菜单选…...
Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移应用
Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移应用 1. 从静态到动态的艺术革命 想象一下,你手头有一幅梵高的《星月夜》,现在不仅能把它变成动态视频,还能让画中的星星真实地旋转流动,云彩如真实的漩涡…...
碧蓝航线自动化工具:解放双手的智能管理完整方案
碧蓝航线自动化工具:解放双手的智能管理完整方案 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 【玩家痛点】现…...
Intv_ai_mk11 后端开发实战:构建高并发AI对话API服务
Intv_ai_mk11 后端开发实战:构建高并发AI对话API服务 1. 高并发AI服务的挑战与机遇 想象一下这样的场景:你的AI对话服务刚上线就迎来百万级用户涌入,每秒数千次请求让服务器不堪重负,响应时间从200ms飙升到5秒以上。这不是危言耸…...
灵感画廊作品集:使用‘梦境描述’生成的超现实主义城市景观系列
灵感画廊作品集:使用‘梦境描述’生成的超现实主义城市景观系列 “见微知著,凝光成影。将梦境的碎片,凝结为永恒的视觉诗篇。” 1. 作品集介绍 灵感画廊是一款基于Stable Diffusion XL 1.0打造的沉浸式艺术创作工具。它不像传统AI绘画工具那…...
