【问题标题】:How to programatically remove sandbox attribute from an iframe with javascript如何使用 javascript 以编程方式从 iframe 中删除沙盒属性
【发布时间】:2020-05-05 15:43:17
【问题描述】:

我不认为这是可能的,但是,我发现了这句话:

"It is strongly discouraged to use both allow-scripts and allow-same-origin at the same time, as that allows the embedded document to programmatically remove the sandbox attribute."

我的 iframe 需要有一个沙箱,但仅当我在某些 URL 中浏览时,嵌入式浏览上下文会尝试将内容导航(加载)到顶级浏览上下文(跳出框架...)

在其他页面上,沙盒需要完全删除,因为它不允许我浏览来自不同来源的网站...

尝试导航的框架是沙盒的,因此不允许导航其祖先。

以编程方式更改沙箱:

document.getElementById("frame").sandbox = "";

...不起作用,因为这仍然存在限制...因此,我需要以某种方式完全删除该属性,我该怎么做呢?

【问题讨论】:

  • 我认为您只需要重置 iframe 而不是更改属性。这意味着,删除 iframe 并重新创建它。

标签: javascript jquery html google-chrome


【解决方案1】:

这些标志只在嵌套浏览上下文时生效 iframe 被导航。删除它们,或删除整个沙箱 属性,对已经加载的页面没有影响。

更多信息 - Here

【讨论】:

  • 你链接我的这个页面说,“当嵌入页面与包含 iframe 的页面具有相同的来源时,将允许脚本和允许相同来源关键字一起设置允许嵌入页面只需删除沙盒属性,然后重新加载自身,就可以有效地完全脱离沙盒。”
  • 可以,但是页面必须来自同一个来源。
【解决方案2】:

您可以使用 iframe.removeAttribute("sandbox") 从元素中删除沙盒属性,这将使 iframe 对于您加载到其中的下一个内容而不是当前加载的内容进行非沙盒化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 2021-10-19
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多