2010-08-27 141 views
9

在一个电子商务网站,我维护,我加入了Facebook的“喜欢”按钮,按照说明操作:Facebook的“喜欢”按钮中断HTTPS/SSL

http://developers.facebook.com/docs/reference/plugins/like

我使用iframe的方法:

<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage%2Fto%2Flike&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" 
    scrolling="no" frameborder="0" style="border:none; overflow:hidden; 
    width:450px; height:80px;" allowTransparency="true"> 
</iframe> 

它的工作原理,但如果客户碰巧登录到她的帐户,她得到了臭名昭著的“mixed content warning

是否有方式使用相同的Facebook'Like'按钮代码,但在SSL模式下不会插入非https内容的方式?

回答

19

可以避免由不是具体的关于传输协议支持SSL域SSL警告。例如而不是包括http://https://,请使用//

代替

<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage%2Fto%2Flike&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe> 

使用

<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage%2Fto%2Flike&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe> 
+0

我不知道这个伎俩。它是否适用于所有的交响乐?谢谢你介绍给我。 – 2011-04-15 20:54:48

+2

这不适用于脸书。现在的问题是,实际的图像只在他们的http网站上。 – Noah 2011-06-27 18:38:56

+0

@诺阿,它为我工作? @ android-eve当用户代理将其保留为空时,它将继承协议...这个诀窍从早期的浏览器日子开始...... – todd 2011-07-08 19:01:42

10

这里是一个暗示,facebook.com支持SSL)

+1

https://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage% 2Fto%2Flike &布局=标准& show_faces =真&宽度= 450 &行动=像&色彩方案=光&高度= 80 – 2010-08-27 18:28:58

+0

你指的是取代的 'HTTP' 所有出现在上述'https'与? 如果是这样,是否会有任何副作用?例如,客户未登录时的“混合内容”? 或...这会减慢搜索引擎漫游爬行? (在上述网站上有数百页上有这个按钮,如果答案是'是',这可能会导致SEO的重大问题)。 – 2010-08-27 20:13:56

+3

是的,用https替换http。 Facebook在使用ssl时不会提供任何“混合”内容,所以它应该可以正常工作。搜索引擎不会加载iframe内容。你不是第一个遇到这个问题的人,这就是为什么他们同时提供http和https的原因。 – 2010-08-27 20:39:11

0
<iframe src="//www.facebook.com/plugins/follow?href=https%3A%2F%2Fwww.facebook.com%2Fludwika.karuna&amp;layout=standard&amp;show_faces=true&amp;colorscheme=light&amp;width=450&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe> 
+1

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Bono 2015-03-13 13:54:52

1

可避免由不被具体有关的传输协议支持SSL的站点SSL警告。例如而不是包括http://https://,请使用//

而不是

<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage%2Fto%2Flike&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe> 

使用

<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage%2Fto%2Fl