在 Chrome webkit 检查器中不断生成“不安全的 JavaScript 尝试使用 URL 访问框架...”错误

Posted

技术标签:

【中文标题】在 Chrome webkit 检查器中不断生成“不安全的 JavaScript 尝试使用 URL 访问框架...”错误【英文标题】:"Unsafe JavaScript attempt to access frame with URL..." error being continuously generated in Chrome webkit inspector 【发布时间】:2011-03-01 21:51:15 【问题描述】:

例如,在使用 Facebook API 时,Chrome(或任何其他 webkit 浏览器)会抛出大量“不安全的 javascript 尝试使用 URL 访问框架...”。

不影响实际操作,但确实让javascript控制台基本无法使用。

我想知道是否有办法专门在控制台中抑制这些错误?或者如果你们能想到其他解决方案,我将不胜感激。

谢谢。

【问题讨论】:

目前我正在使用将控制台选项卡设置为仅显示日志的解决方法。我正在寻找一种允许我跟踪错误的解决方案(只是不是这个)。 最好提供您如何使用 API 的示例。发生这种情况的原因有很多。 我知道你的意思,但我很确定这发生在任何 facebook 集成中。例如,在这个 Domino 的站点(生产中)pizzaholdouts.com 上打开您的 webkit js 控制台 您不只是尝试跨站点脚本吗?您是否从自己的服务器请求 facebook api 地址?方式有点不同。 没有要求任何东西,我只是放入样板文件以使 js sdk 工作developers.facebook.com/docs/reference/javascript 【参考方案1】:

您可以在测试期间通过使用 --disable-web-security 命令行选项运行 chrome 来允许跨域请求。这应该可以消除错误(并允许 FB 监视您的测试;)

【讨论】:

嗯,这很有趣......有没有办法在命令行之外设置选项?我从命令行尝试了这个:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security,它似乎工作!但它说它无法加载我的个人资料...知道如何从应用程序中设置该标志,或将其设置为默认值吗? 作为一个更新,我现在只使用 chrome,我仍然很想知道这个问题的答案 open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security【参考方案2】:

当加载来自不同域的源并尝试访问 document.cookie 时,会发生这种情况。它发生在头源(脚本标签)以及出于某种原因尝试访问 document.cookie 的 iframe 文档中。

【讨论】:

【参考方案3】:

有什么问题?

Chrome JS 控制台中有大量 Unsafe JavaScript attempt to access frame with URL... 错误消息。

作为@thechrisproject points out,这些错误是由许多知名的第 3 方 api 和小部件引起的,包括但不限于:

Facebook JS SDK Vimeo Iframe 嵌入 Google 地图 iframe 嵌入

我对为什么的理解: (如果我错了请纠正我)

与竞争浏览器相比,Chrome 具有更严格的安全设置和/或显示更多此类错误。 API/widget/embed 作者试图做一些不能在所有浏览器中工作的事情(跨域/框架)(可能用于他们自己的报告/分析),但如果不这样做,实际上不会影响他们的小部件的可用性工作(只会导致很多烦人的错误)

快速解答

不,您不能(只是)在 chrome 控制台中隐藏这些错误。

解决方案?

处理它。这些错误实际上并没有破坏这些 3rd 方 api 和小部件,它们只是使控制台更难使用 您可以将控制台设置为仅记录警告、日志或调试消息。这将隐藏所有错误。 您可以使用其他浏览器 作为@Dagg_Nabbit. pointed out,您可以通过使用--disable-web-security 命令行选项运行chrome 来允许跨域请求。更多信息在这里:Disable same origin policy in Chrome。请注意,此设置将对浏览器的安全性产生负面影响。我有 2 个 chrome 快捷方式,因此我可以使用或不使用此标志打开它。

【讨论】:

【参考方案4】:

既然我们不能责怪谷歌的人构建了这样一个安全的浏览器,我认为最好的解决方案是使用 Facebook 的服务器端解决方案(例如 php SDK),它会为你节省很多很多很多,很多,很多头痛。我在使用 FB javascript SDK 时看到的唯一优势是弹出式登录,您可以使用 javascript/jQuery 自己完成。

【讨论】:

为什么使用PHP SDK(或其他服务器端SDK)会省去很多麻烦? @steve:Chrome 阻止不安全请求这一事实足以说明客户端处理的不安全性。 恕我直言,JS控制台的污染不应该是决定将逻辑放在服务器端还是客户端时的主要考虑因素。 性能、安全性、代码组织/可维护性、可移植性——我会首先考虑的所有事情。 ***.com/questions/1516852/…【参考方案5】:

如果您在 Facebook 注册应用时,如果您在“站点 URL”字段中没有尾部正斜杠,则可能会引发这些错误。换句话说,您需要“http://domain.com/”而不是“http://domain.com”

您可以从developers.facebook.com/apps 编辑设置 -> 基本 -> 站点 URL 检查站点 URL 设置。

【讨论】:

能否请您向我澄清一下您的句子

以上是关于在 Chrome webkit 检查器中不断生成“不安全的 JavaScript 尝试使用 URL 访问框架...”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何直接在 chrome 检查器中创建和附加 CSS3 动画?

如何在 Chrome 检查器中显示完整的标尺线?

是否可以找到导致规则在 Chrome 检查器中显示为灰色值的父 CSS?

Chrome 网络检查器中缺少请求标头(和发送的 cookie)?

如何在 Chrome 的检查器中添加/插入之前或之后的伪元素?

chrome元素检查器中的element.style?