【问题标题】:Windows 8 App iframe trying access page content on intranetWindows 8 App iframe 尝试访问 Intranet 上的页面内容
【发布时间】:2013-05-07 22:40:20
【问题描述】:

我正在使用 JavaScript 和 HTML 为我的公司构建一个 Windows 8 应用程序。我有一个加载公司网页的 iframe,但在尝试访问 iframe contentDocument 属性时得到“拒绝访问”。 iframe 显示页面,但我无法访问它的属性(如历史记录)。应用程序和网页都在同一网络上的公司内部。我读到当 iframe 父页面与 iframe 中的页面位于不同的域时,会发生“拒绝访问”错误。

  1. 如何让应用的 iframe 访问 contentDocument,因为它不在 Web 服务器上运行?
  2. 有没有办法将应用设置为与网页相同的域?

【问题讨论】:

  • 你想完成什么,也许还有其他方法?信息是否可以通过 postMessage 跨界传递?
  • 我目前有一个分配公司任务的应用程序。应用程序中有指向公司网站的链接,我们不想启动 IE 来查看它们。由于两个应用程序不能存在于两个不同的显示器上,IE 将应用程序置于后台,这是我们不希望的。这就是我们使用 iframe 的原因。我们遇到的问题是,当您在 iframe 中导航时,应用程序中的后退按钮不会跟踪那些页面,并且已导航到 iframe 内网站的用户无法返回一页。我想跟踪这些页面并将它们添加到应用程序的后退按钮或我创建的按钮。
  • 我无法控制公司的网站,所以我不知道如何让 postMessage 工作。不会编码来收听我的消息,以便它可以在网页上发回信息吗?用户可以通过该应用导航到许多页面。
  • 一个选项(hack)虽然需要一点点摆弄是当页面导航到外部链接时,实际上导航到包含 iframe 的页面。该页面被发送 URL 以加载到 iframe 中。因此,导航实际上是转到另一个主机页面。我希望您的用户从外部页面导航几个级别并让后退按钮一直工作,这种技术将不起作用 - 当按下后退按钮时,整个 iframe 主机页面将消失并返回到您的应用之前的内部页面。
  • 不幸的是,他们会越来越深。

标签: javascript html iframe winjs intranet


【解决方案1】:

您的本地应用程序将始终在不同的上下文(称为本地上下文)中运行。网络上的 HTML 内容将在网络上下文中。

有关允许/不允许的更多上下文信息,请参见此处: Features and restrictions by context

我不知道设置相同域的方法,但您可以尝试“为网页提供额外访问权限”下列出的技术。虽然我个人没有在你的场景中尝试过。

How to link to external web pages

上下文之间的通信通常通过 postMessage 函数进行,如下所述:Developing Secure Apps

我想看看你想要的信息是否可以通过 postMessage 传达。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多