返回顶部
首页 > 资讯 > 精选 >使用iframe怎么实现跨域
  • 665
分享到

使用iframe怎么实现跨域

2023-06-09 11:06:24 665人浏览 独家记忆
摘要

使用iframe怎么实现跨域?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为什么会跨域为了保证用户信息的安全,95年的时候Netscape公司引进了同源策略,里面的同源指的是三

使用iframe怎么实现跨域?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

为什么会跨域

为了保证用户信息的安全,95年的时候Netscape公司引进了同源策略,里面的同源指的是三个相同:协议、域名、端口。

违反了同源策略就会出现跨域问题,主要表现为以下三方面:

  • 无法读取cookie、localStorage、indexDB

  • DOM无法获得

  • ajax请求无法发送

场景

最近在做一个需求,需要用iframe引入一个别人封装好的类似视频播放器的东西。iframe里面有一个全屏的按钮,点击后需要页面让iframe全屏,由于受到同源策略的限制,iframe无法告诉页面全屏。

解决办法

设置domain

document.domain作用是获取/设置当前文档的原始域部分,同源策略会判断两个文档的原始域是否相同来判断是否跨域。这意味着只要把这个值设置成一样就可以解决跨域问题了。
在此我将domain设置为一级域名的值,a页面url为a.demo.com,a页面中iframe引用的b页面url为b.demo.com,具体设置为

document.domain = 'demo.com'

设置完之后,在a页面的window上挂载使iframe全屏的方法

// a页面window.toggleFullScreen = () => {    // do something}

在b页面上可以直接获取到a页面的window对象并直接调用

// b页面window.parent.toggleFullScreen()

但是这个值的设置也有一定限制,只能设置为当前文档的上一级域或者是跟该文档的URL的domain一致的值。如url为a.demo.com,那domain就只能设置为demo.com或者a.demo.com。因此,设置domain的方法只能用于解决主域相同而子域不同的情况。

使用中间页面

我们还可以使用一个与a页面同域名但不同路由的c页面作为中间页面,b页面加载c页面,c页面调用a页面的方法,从而实现b页面调用a页面的方法。具体操作如下:

在a页面的node层新开一个路由,此路由加载一个c页面作为中间页面,c页面的url为a.demo.com/c。c页面只是一个简单的html页面,在window的onload事件上调用了a页面的方法。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title></title></head><body>    <script>        window.onload = function () {            parent.parent.toggleFullScreen();        }    </script></body></html>

由于c页面和a页面是符合同源策略的,所以可以避开跨域问题,执行全屏的方法。

postmessage

window.postMessage方法可以安全地实现跨源通信,写明目标窗口的协议、主机地址或端口就可以发信息给它。

// b页面parent.postMessage(    value,    "Http://a.demo.com");
// a页面window.addEventListener("message", function( event ) {    if (event.origin !== 'http://b.demo.com') return;    toggleFullScreen() });

看完上述内容,你们掌握使用iframe怎么实现跨域的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 使用iframe怎么实现跨域

本文链接: https://lsjlt.com/news/255924.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用iframe怎么实现跨域
    使用iframe怎么实现跨域?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为什么会跨域为了保证用户信息的安全,95年的时候Netscape公司引进了同源策略,里面的同源指的是三...
    99+
    2023-06-09
  • 使用postMessage怎么实现iframe跨域
    今天就跟大家聊聊有关使用postMessage怎么实现iframe跨域,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。postMessage是什么此处引用MDN关于postMessag...
    99+
    2023-06-09
  • 使用iframe和postMessage怎么实现页面跨域通信
    这篇文章将为大家详细讲解有关使用iframe和postMessage怎么实现页面跨域通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通常情况下,对于两个不同页面的脚本,只有当执行它们的页面...
    99+
    2023-06-09
  • 使用postMessage怎么解决iframe跨域通信
    这篇文章将为大家详细讲解有关使用postMessage怎么解决iframe跨域通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先我们模拟场景,假设有两个不同源的页面,iframePage...
    99+
    2023-06-09
  • 如何利用iframe实现ajax跨域通信
    本篇内容介绍了“如何利用iframe实现ajax跨域通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在漫...
    99+
    2024-04-02
  • 使用postMessage实现iframe跨域通信的示例代码
    1、父页面内容 <!DOCTYPE html> <html> <head> <meta charset="utf-8...
    99+
    2024-04-02
  • Vue中iframe怎么结合window.postMessage实现跨域通信
    这篇文章主要介绍“Vue中iframe怎么结合window.postMessage实现跨域通信”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue中iframe怎么结合window.postMess...
    99+
    2023-07-04
  • vue中iframe使用以及结合postMessage实现跨域通信
    目录使用场景需求iframe使用基本使用常用属性iframe高度自适应获取iframe的内容同域下获取父级/子级内容iframe跨域postMessage通信在vue中使用使用场景 ...
    99+
    2024-04-02
  • 怎么让iframe可以跨域访问
    要让iframe可以跨域访问,需要在被嵌入的页面和嵌入页面的服务器端做一些配置。在被嵌入的页面中,可以通过设置`document.d...
    99+
    2023-08-08
    iframe
  • Vue中iframe结合window.postMessage实现跨域通信
    目录一、前言二、应用场景2.1 嵌入页面2.2 postMessage 实现父子页面通信2.3 子页面向父页面传值2.4父页面代码:一、前言 什么是iframe? iframe 元素...
    99+
    2022-12-31
    vue iframe 跨域通信 window.postMessage 跨域通信 vue跨域通信
  • web开发中iframe的跨域使用方法
    这篇文章给大家分享的是有关web开发中iframe的跨域使用方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   同一个origin下:   父页面可以通过iframe.c...
    99+
    2024-04-02
  • 使用Ajax怎么实现跨域访问
    使用Ajax怎么实现跨域访问?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。解决方案1.JsonpJsonp解决跨域相对简单,服务器无需任何配置。具体实现如下:$.ajax({&...
    99+
    2023-06-08
  • 怎么用django+vue实现跨域
    这篇“怎么用django+vue实现跨域”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用django+vue实现跨域”文...
    99+
    2023-06-29
  • 利用SpringMVC怎么实现跨域
    利用SpringMVC怎么实现跨域?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 什么是跨域跨域,即跨站HTTP请求(Cross-site HTTP req...
    99+
    2023-05-31
    springmvc 跨域
  • iframe与主框架跨域如何实现相互访问
    这篇文章给大家分享的是有关iframe与主框架跨域如何实现相互访问的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.同域相互访问假设A.html 与 b.html domain都...
    99+
    2024-04-02
  • Ajax 中怎么实现跨域
    Ajax 中怎么实现跨域,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一 、ajax 跨域调用会有什么问题coolkissbh.com下页...
    99+
    2024-04-02
  • tomcat怎么实现ssl跨域
    要实现Tomcat的SSL跨域,您需要按照以下步骤进行设置:1. 生成SSL证书:您需要生成一个SSL证书,以便在Tomcat上启用...
    99+
    2023-09-01
    ssl tomcat
  • vue怎么实现的跨域
    随着前端技术的不断发展,前端工程师们在制作网站时经常需要通过Ajax请求来获取数据。在这个过程中,很容易遇到跨域问题。本文将介绍Vue.js如何实现跨域请求的方式。JSONP跨域JSONP(JSON with Padding)是一种跨域数据...
    99+
    2023-05-18
  • vue内嵌iframe跨域通信的实例代码
    目录vue内嵌iframe跨域通信1、Vue组件中如何引入iframe?2、vue如何获取iframe对象以及iframe内的window对象?3、vue如何向iframe内传送信息...
    99+
    2022-11-13
    vue内嵌iframe跨域通信 vue内嵌iframe vue内嵌 vue跨域
  • Vue怎么使用postMessage实现父子跨域通信
    这篇文章主要讲解了“Vue怎么使用postMessage实现父子跨域通信”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue怎么使用postMessage实现父子跨域通信”吧!一、跨域通信子...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作