【发布时间】:2012-02-17 08:29:30
【问题描述】:
我已经为这个特定的错误工作了一周,调试不同的社交按钮并将其范围缩小到 Facebook:我实现的每个“Like”按钮(HTML5、xfbml 等)都会触发相同的跨域脚本错误。基本上,Facebook 在点击“喜欢”时,每个 iFrame(如下所示)都会触发此错误:
Unsafe JavaScript attempt to access frame with URL http://mediacdn.disqus.com/1326940420/build/system/def.html#xdm_e=http%3A%2F%2Fwww.vancitybuzz.com&xdm_c=default4311&xdm_p=1& from frame with URL http://www.facebook.com/plugins/like.php?channel_url=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df31a0247d%26origin%3Dhttp%253A%252F%252Fwww.vancitybuzz.com%252Ff3c0eb7e0c%26relation%3Dparent.parent%26transport%3Dpostmessage&extended_social_context=false&href=http%3A%2F%2Fwww.vancitybuzz.com%2F2012%2F01%2Fchinese-new-year-events-2012-vancouver-richmond-burnaby%2F&layout=box_count&locale=en_US&node_type=link&sdk=joey&send=false&show_faces=false&width=90. Domains, protocols and ports must match.
为什么这不是重复的:即使没有 twitter 按钮和 google+ 按钮也会出现此问题。它也出现在“喜欢”按钮的每个实现中。症状指向一个新问题。
尝试的方法:我已经尝试了多个“版本”的 Like 按钮,但都存在相同的问题。它甚至与 DISQUS 冲突。
嫌疑人:没有任何 DISQUS 代码的页面运行正常。这个变量(由 DISQUS wordpress 插件输出)是可疑的:
var facebookXdReceiverPath = 'http://www.vancitybuzz.com/wp-content/plugins/disqus-comment-system/xd_receiver.htm';
此外,Facebook 的 javascript 输出也值得怀疑。
自己看:转到http://www.vancitybuzz.com/2012/01/research-in-motion-ceos-resign/,不过它可能会改变。
问题
鉴于此处的信息,是否有人知道强制消除跨域错误的解决方法?非常感谢。
【问题讨论】:
-
这不仅适用于 Facebook,而且适用于 Google plus1 等每个跨域请求。看看这个stackoverflow.com/questions/4324108/…
-
这是否意味着我需要同时找到静态和动态生成的“parent.locations”并统一域?你知道 Facebook 在哪里/如果把它扔进去吗?谢谢!
-
只是为了澄清,错误是导致任何功能中断,还是只是弄乱你的控制台?浏览器倾向于记录安全异常,即使它们发生在 try/catch 块中(我想是为了警告偏执的用户网站可能试图做一些顽皮的事情?)。大多数跨域 AJAX hack 需要多次尝试和捕获才能确定哪种方法适用于您的特定浏览器。
-
@MikeRuhlin 我不遗余力,但我怀疑这可能会影响 facebook“计数”,尽管原因可能是这里一个不同且不相关的问题:stackoverflow.com/questions/8953786/…
标签: javascript facebook facebook-like cross-domain disqus