当前位置: 首页 > 知识库问答 >
问题:

javascript - window.postMessage 可以跨域传递不能被序列化的数据吗?

林和煦
2023-11-17

如题

mdn 上介绍 window.postmessage 传递的 message 是它将会被结构化克隆算法 (en-US)序列化。
那么对于复杂对象,对于Error以及Function等是不能传递的,会导致克隆数据出错。

那有没有什么办法可以传递这类不能结构化的数据?

共有2个答案

姚凯歌
2023-11-17

不行,所有跨系统的传递都不能传递复杂对象。

如果你有比较复杂的需求,可以多次数据传输,比如 A 里有个复杂对象,B 是无法直接修改的;但是你可以在 A 里留下一个消息接口,当你收到某个消息的时候,就去处理。

段劲
2023-11-17

传输过程只能时字符串,所以,只能在发送时做编码,接收时作解码处理,你这个情况只能传递一下关键信息过去。你在请求一个网络接口的时候也是无法传递你说的这写Error或Function

 类似资料:
  • 我已经上了三节课 任务未序列化

  • 如果接口只是一个标记接口,用于在 java 中传递有关类的某种元数据 - 我有点困惑: 在阅读了java的序列化算法(元数据从下到上,然后从上到下的实际实例数据)的过程之后,我无法真正理解哪些数据不能通过该算法进行处理。 简而言之: 哪些数据可能导致? 我怎么知道我不应该为我的类添加子句?

  • 本文向大家介绍表单可以跨域吗?相关面试题,主要包含被问及表单可以跨域吗?时的应答技巧和注意事项,需要的朋友参考一下 表单可以跨域。 form提交是不会携带cookie的,没有办法设置一个hidden的表单项,然后通过js拿到其他domain的cookie,因为cookie是基于域的,无法访问其他域的cookie。所以浏览器认为form提交到某个域,是无法利用浏览器和这个域之间建立的cookie和c

  • 同源策略 要理解跨域,首先要知道同源策略。所谓同源策略:是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能受到影响。可以说,WEB是构建在同源策略上的。 同源:如果两个URL的域名、协议、端口相同,则表示它们同源。 浏览器的同源策略,限制了来自 不同源的"文档"或脚本对 当前文档读取或设置属性。也就是其它源的文档或脚本不能对当前文档进行设置属性和读取操作。根据

  • 我们有一个基于Java的WebSocket,它目前正在返回JSON,然后我们在一个应用程序中使用它。Net应用程序。由于我们接收的数据的大小,我想开始利用协议缓冲区在大小/带宽以及在序列化和反序列化过程中节省时间/资源方面提供的所有优点。 我的问题是: 如果我要求我们的Java团队将他们的JSON串行化器替换为Prothrobuf的Java实现,那么我可以在我的. Net消费者中使用Prostro

  • 问题内容: 我在android / java中对Location的子类进行序列化遇到了麻烦 位置不可序列化。我有一个名为FALocation的第一个子类,它没有任何实例变量。我已经宣布它可序列化。 然后,我有一个名为Waypoint的第二个类,看起来像这样: 序列化工作正常。 反序列化会产生跟随翼异常(腿对象包含一个航路点): 问题答案: 序列化位置绝对必要吗?也许您可以将其标记为瞬态,并在反序列