首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><amp-iframe>的来源不能等同于容器

<amp-iframe>的来源不能等同于容器
EN

Stack Overflow用户
提问于 2016-05-19 09:46:38
回答 4查看 8.5K关注 0票数 6

我想在我的第一个AMP项目中解决这个问题,

这就是我面临的问题:

error.js:58:

代码语言:javascript
复制
Origin of <amp-iframe> must not be equal to container

这是我的index.html中的amp-iframe代码:

代码语言:javascript
复制
<amp-iframe
    width=100
    height=100
    layout="nodisplay"
    sandbox="allow-same-origin allow-forms allow-scripts"
    src="https://www.example.com/scripts/app.js">
</amp-iframe>

当我浏览console选项卡时,我拥有以下内容:

代码语言:javascript
复制
Powered by AMP ⚡ HTML – Version 1462999126709

AMP validation successful.

我使用<amp-iframe>来使用外部javascript,我的custom.js

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-20 15:05:10

问题是,你是在试图放大-如果内容是在同一来源的AMP。出于安全原因,这是被禁止的(主要与相同来源的政策在iframes内部使用合成源的方式有关)。

修复方法是确保外部JS从一个不同的来源提供给您的AMP。因此,如果您的AMP在example.com上,那么您应该为来自SOMEOTHERORIGIN.example.com的iframed服务。

票数 12
EN

Stack Overflow用户

发布于 2020-05-26 20:39:29

您可以尝试从sandbox=中删除“允许-相同来源的允许-表单允许-脚本”,但是在某些情况下它会创建新的错误。

其他可能的解决办法是确保外部JS从不同的来源提供给您的AMP。因此,如果您的AMP在example.com上,那么您应该为来自SOMEOTHERORIGIN.example.com的iframed服务。

如果上述两种修复方法都无法工作,因为您有来自您自己域的iframe源,我建议您可以尝试使用amp建议的- https://github.com/ampproject/amphtml/blob/master/spec/amp-iframe-origin-policy.md

“通过重定向,人们可以很容易地绕过AMP的不同来源的强制执行,因为只有最初的URL被测试过。”

为了获得重定向,我尝试使用从tinyURL站点生成的url。我为我的url创建了一个tinyURL,并将其放置在src的amp-iframe中,并且它正在工作。这是一种重定向。

票数 2
EN

Stack Overflow用户

发布于 2019-11-01 08:51:12

您可以通过从沙箱中删除"allow-same-origin"属性来解决这个问题。但是,您需要修改标题并将"access-control-allow-origin"设置为"*",因为您的浏览器将从沙箱中删除该属性,从而将源检测为null。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37319557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档