3

我的主要 javascript(以及所有静态内容)包含在https://static.anuary.com. 用户正在浏览的 URL 是https://dev.anuary.com/somepath/

频道文件需要放在哪里,dev.anuary.com或者static.anuary.com?目前是http://static.anuary.com/channel.html


我问是因为我仍然收到错误消息:

不安全的 JavaScript 尝试使用 URL https://www.facebook.com/dialog/oauth?access_token=[..]&api_key=[..]&app_id=[..]&client_id=[..]&display=popup&domain= 访问框架dev.anuary.com&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D6%23cb%3Df3ac7a0544%26origin%3Dhttp%253A%252F%252Fdev.anuary。 COM%252Ff373e908a8%26domain%3Ddev.anuary.com%26relation%3Dopener%26frame%3Df312def42c&RESPONSE_TYPE =记号%2Csigned_request&范围=电子邮件%2Cuser_birthday%2Cuser_likes%2Cuser_interests%2Cpublish_stream&SDK =从帧乔伊与URL http://dev.anuary.com/658fe23c24564ac978c31d167549c4ce8b36686d65a78ad99bfb38765d46e232 /。域、协议和端口必须匹配。


回应@dtbarne:

嗯,就是这样——我仍然不知道,因为我已经尝试过弓形方法和任何方法,以防它产生相同的错误:

不安全的 JavaScript 尝试使用 URL https://www.facebook.com/dialog/oauth?access_token=[..]&api_key=[..]&app_id=[..]&client_id=[..]&display=popup&domain= 访问框架dev.anuary.com&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D6%23cb%3Df1ee31b93%26origin%3Dhttp%253A%252F%252Fdev.anuary。 COM%252Ff9359b2f%26domain%3Ddev.anuary.com%26relation%3Dopener%26frame%3Df18e94f9c4&RESPONSE_TYPE =记号%2Csigned_request&范围=电子邮件%2Cuser_birthday%2Cuser_likes%2Cuser_interests%2Cpublish_stream&SDK =从帧乔伊与URL http://dev.anuary.com/658fe23c24564ac978c31d167549c4ce8b36686d65a78ad99bfb38765d46e232 /。域、协议和端口必须匹配。

4

3 回答 3

1

听起来你已经知道答案了。它必须在 dev.anuary.com 上。目的是允许 FB 和用户访问的 URL 之间的通信。

于 2012-05-17T04:40:49.380 回答
1

正如你自己所说,这个错误不是致命的,它意味着警告用户可能会发生一些可疑的事情。

By DesignFacebook 还在他们的错误系统中将此问题标记为:错误 > 不安全的 JavaScript 尝试使用 URL 访问框架...。
此外,这里有很多关于堆栈溢出的线程,例如:Facebook Authentication - Unsafe JavaScript attempt to access frame with URL

现在我们知道这个“错误消息”是不可避免的,只要一切对你有用,你就可以随意使用这个频道。
正如文档中所述,您甚至不需要使用该通道:

channelUrl 参数是可选的,但建议使用。提供通道文件可以帮助解决三个特定的已知问题。首先,包含跨框架通信的代码的页面可能会导致社交插件在没有 channelUrl 的情况下显示为空白。其次,如果没有提供 channelUrl 并且页面包含自动播放的音频或视频,则用户可能会听到两个音频流,因为该页面已在后台第二次加载以进行跨域通信。第三,通道文件将防止在您的服务器端日志中包含额外的命中。如果您不指定 channelUrl,您可以从日志中删除包含 fb_xd_bust 或 fb_xd_fragment 参数的页面查看,以确保正确计数。

但它也指出:

频道文件解决了某些浏览器中跨域通信的一些问题。

因此,由您决定。
我个人建议使用频道并从常规服务器而不是静态服务器提供文件。
但是,您应该将输出设置为具有较长的缓存到期日期,这样您的服务器就不会收到很多对此文件的请求,正如他们在JS SDK 文档页面中提到的那样:

<?php
   $cache_expire = 60*60*24*365;
   header("Pragma: public");
   header("Cache-Control: max-age=".$cache_expire);
   header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>
<script src="//connect.facebook.net/en_US/all.js"></script>

(php 示例,但可以使用任何语言完成)。

希望这个答案可以为您澄清事情。

于 2012-05-29T15:24:21.120 回答
0

频道文件应该放在用户访问的服务器/地址上,因为频道文件用于修复一些跨站点的 javascript 错误。如果用户总是使用 HTTPS 访问您的网站,那么您应该使用 HTTPS 引用频道文件以及任何其他内容。

频道文件本身应保持为<script src="//connect.[..],但请确保您的所有静态内容和 JS 包含都包含 https。

于 2012-05-28T13:20:52.197 回答