因为文档的框架被沙箱化,所以脚本执行被阻止 - Angular 应用程序

38

我有一个奇怪的问题——当我将应用程序(纯Angular应用程序和restful API)部署到生产服务器并通过来自其他站点(例如电子邮件引用)的链接访问其URL时,我得到了一个空白页面——Firefox没有任何反应,Chrome则说:

  

在“网站URL”中阻止脚本执行,因为文档的框架被沙盒化,并且未设置“allow-scripts”权限。

并阻止了所有我的.js文件...

这是什么意思?我在互联网上找到了一些关于iframes的内容,但是我在我的网站上没有iframes...

我认为最奇怪的事情是,如果我直接访问那个链接,一切都正常...

所以如何避免这种行为?

感谢任何回复


如果“email”表示一个Web客户端,那么该网站更有可能在沙盒iframe中打开,我的意思是它不会直接在您的浏览器中打开。 - maurycy
也许你们公司的网络有一些非常奇怪严格的防火墙策略? - Michał Lach
3
我使用mailtrap.io来发送邮件,并且该邮件(带有链接)在iframe中打开 - 或许这就是问题所在,但我不明白iframe如何会影响重定向到其他网站(如果整个网站都在该iframe中打开,我可以理解)。 - jreh
1个回答

46

错误信息提醒说,一个 iframe 没有适当的特权限制而被沙盒化了

是的,您正在点击一个 iFrame。这是一个沙盒化 iFrame 的示例。

<iframe sandbox src="http://usercontent.example.net/getusercontent.cgi?id=12193"></iframe>

如果你在Gmail上检查元素,你会发现到处都是iFrame。sandbox属性并不总是自动附加的,因为它控制着允许什么。

当需要弹出窗口时,属性将发生变化。

<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://usercontent.example.net/getusercontent.cgi?id=12193"></iframe>

这样做是为了保护用户和电子邮件应用程序免受XSS攻击。

iFrame必须允许弹出窗口、新窗口或脚本。无论您尝试什么操作(可能只是导航),该操作都被沙盒阻止了。


3
“是的,您正在点击 iFrame 中。” 我不这样认为。当我从 mailtrap.io 重定向到我的 AngularJS 应用程序时,出现了此错误消息。 - yaru
奇怪...我刚试图重现这个错误 - 它消失了。我所做的是关闭我的 Mac(我的 Angular 开发应用程序版本在本地运行),然后再次打开它。 - yaru
2
这个错误可能发生在没有 iframe 元素的情况下。 - Jason S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接