类似Facebook和Twitter的推特按钮导致跨域问题

Facebook like and Twitter tweet buttons causing Cross Domain Issues

本文关键字:问题 按钮 Facebook Twitter 类似      更新时间:2023-09-26

我同时使用twitter推特按钮和类似facebook的按钮

<a href="http://twitter.com/share" 
   class="twitter-share-button"
   data-url="http://example.com"
   data-text="some text"
   data-count="horizontal"
   data-via="someone">Tweet
</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<fb:like 
   class="fbShare" 
   href="http://example.com" 
   font="" send="true" 
   layout="button_count" 
   show_faces="false">
</fb:like>

但它们都在吐出跨域错误,不是一两个,而是持续不断。

实际错误(有替换)是

不安全的JavaScript访问尝试带有URL的框架https://www.facebook.com/plugins/like.php?channel_url=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df3cde04b84%26origin%3Dhttp%253A%252F%252Fexample.com%252Ff20b9fb1fc%26relation%3Dparent.parent%26transport%3Dpostmessage&href=http%253A%252F%252Fexample.com%252F&layout=按钮计数&locale=en_US&node_type=链接&sdk=joey&send=true&show_faces=false&宽度=150来自具有URL的帧http://example.com/.域,协议和端口必须匹配。

不安全的JavaScript访问尝试带有URL的框架http://platform0.twitter.com/widgets/tweet_button.html?_=1308700896075&count=水平&id=twitter_weet_button_0&lang=en&original_referer=http%3A%2F%2example.com%2F&text=一些文本&url=http%3A%2F%2example.com%2F&via=某人来自具有URL的帧http://example.com/.域,协议和端口必须匹配。

这似乎是您可能想要使用Twitter登录的Twitter按钮代码的一个错误。它似乎试图遍历页面上的每个dom对象,但无法访问Facebook iframe对象。例如,如果你还添加了Google+1按钮,它现在会抛出一条额外的类似消息,但与谷歌相关的URL除外。

不过,功能似乎没有受到影响,所以我会忽略它。任何使用这个推特按钮和另一个来自不同服务器的iframe(例如Facebook/G+按钮)的网站也会出现同样的问题(例如,尝试mashable.com上的任何页面)。如果你不想忽略它,你可以删除推特javascript引用,并创建一个自定义的推特按钮,如他们的推文按钮页面上所述,通过使用javascript弹出以下url格式:http://twitter.com/share?url=http%3A%2F%2Fdev.twitter.com%2Fpages%2Ftweet-按钮,这样做的缺点是推特计数不会显示在你的页面上。

我知道这个问题太老了。但由于推特的问题仍然有效,作为对BK答案的跟进,我创建了一个自定义推特按钮,看起来与推特的JS API完全一样,但没有使用它,并且仍然包括共享计数!所以,对于那些感兴趣的人,我把它上传到了我的GitHub。

演示:http://fiddle.jshell.net/eyecatchup/Th6P2/2/show/
代码:https://github.com/eyecatchup/tweetbutton