Chrome浏览器中不断生成“Unsafe JavaScript attempt to access frame with URL…”错误

130
Chrome(或任何其他基于 Webkit 的浏览器)在使用 Facebook API 等时会抛出许多“Unsafe JavaScript attempt to access frame with URL…”错误信息。
这并不影响实际操作,但使 JavaScript 控制台基本上无法使用。
我想知道是否有一种方法可以在控制台中特别抑制这些错误信息?如果您能想到其他解决方案,我将非常感激。
谢谢。

1
目前我正在使用的解决方法是将控制台选项卡设置为仅显示日志。我正在寻找一种解决方案,允许我跟踪错误(只是不包括这个)。 - Neil Sarkar
1
你难道不是在尝试跨站脚本攻击吗?你是从自己的服务器请求 Facebook API 地址吗?这种方式有些不同。 - Tomasz Durka
4
不需要任何请求,我只是加入样板文件以使JS SDK工作。http://developers.facebook.com/docs/reference/javascript/ - Neil Sarkar
你尝试过在代码中使用try/catch语句来捕获异常吗? - Sebastián Grignoli
@Sebastian 我认为问题在于调用是在 Facebook 托管的脚本中进行的,我无法修改以执行该操作。 - Neil Sarkar
显示剩余3条评论
5个回答

19

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


嗯,这很有趣...除了命令行之外,有没有设置该选项的方法?我尝试从命令行运行以下命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security,它似乎起作用了!但是它说无法加载我的个人资料...有什么办法可以在应用程序内部设置该标志,或将其默认设置为该标志? - Neil Sarkar
4
更新一下,我现在只使用Chrome浏览器,并且我仍然非常想知道这个问题的答案。 - Neil Sarkar
2
open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security - sandstrom

5

问题是什么?

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

正如@thechrisproject指出的那样,这些错误是由许多知名的第三方API和小部件引起的,包括但不限于:

  • Facebook JS SDK
  • Vimeo Iframe Embed
  • Google Maps Iframe Embed

我对原因的理解:(如果我错了,请纠正我)

Chrome有更严格的安全设置和/或显示比竞争浏览器更多的此类错误。 API / widget / embed作者试图执行某些操作(跨域/框架),这些操作在所有浏览器中都无法工作(可能是为了他们自己的报告/分析),但如果它不起作用,则实际上不会影响其小部件的可用性(只会导致很多烦人的错误)。

快速答案

,您不能(仅仅)在chrome控制台中抑制这些错误。

解决方案?

  • 忍受它。这些错误实际上并不会破坏这些第三方API和小部件,只是使控制台更难使用
  • 您可以将控制台设置为仅记录警告、日志或调试消息。这将隐藏所有错误。
  • 你可以使用其他浏览器
  • @Dagg_Nabbit指出的那样,您可以通过使用--disable-web-security命令行选项在chrome中允许跨域请求。更多信息请参见:在Chrome中禁用同源策略。请注意,此设置将对您的浏览器安全性产生负面影响。我有2个chrome快捷方式,所以我可以带或不带此标志打开它。

4

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


3

既然我们不能责怪谷歌的人构建如此安全的浏览器,我认为最好的解决方案是使用Facebook的服务器端解决方案(例如PHP SDK),它会为您节省很多很多很多很多很多麻烦。我认为使用FB javascript SDK的唯一优点是弹出式登录,您可以使用javascript / jQuery自行完成。


6
使用PHP SDK(或其他服务器端SDK)会为什么节省很多麻烦? - Steve Horn
@steve:Chrome阻止不安全请求的事实说明了客户端处理的不安全性。 - Jhourlad Estrella
2
在我看来,污染JS控制台不应是决定将逻辑放在服务器端还是客户端的主要考虑因素。 - Zach Lysobey
1
性能、安全、代码组织/可维护性、可移植性 - 这些都是我首先考虑的。 - Zach Lysobey

2
如果你在向Facebook注册应用时,在“站点网址”字段中没有以斜杠结尾,可能会导致出现这些错误。换句话说,你需要 "http://domain.com/" 而不是 "http://domain.com"。
你可以从 developers.facebook.com/apps 的“编辑设置” -> “基本” -> “站点网址”查看站点网址设置。

请问您能否向我澄清一下您的句子? - itinance

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