3
在我的生產服務器SSL/https安裝,我的Facebook 分享按鈕不顯示。nginx重寫導致Facebook的JavaScript不工作
相同的分享按鈕在我的測試服務器(僅限http)使用相同的代碼庫可見。
我認爲這是由於nginx的重定向造成從http所有流量到https設置,但我不能修復它
我的Facebook 份額按鈕的代碼庫
<div id="fb_share_id" class="fb-share-button" data-href="http://www.example.com/hi.html" data-type="button"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxxxxxx',
xfbml : true,
version : 'v2.5'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
和我nginx的重寫規則
upstream example_app_server {
server unix:/webapps/example/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 443 default_server ssl;
server_name example.com;
server_name www.example.com;
ssl on;
.
.
}
有幾個思路:1)改變數據HREF鏈接也使用https 2)確保了Facebook SDK被加載(查看網絡選項卡的瀏覽器開發工具)3)在瀏覽器控制檯中查找錯誤,並在這裏發佈 – Martin
99%,這與nginx無關,因爲它全部發生在JS和JS中直接轉到FB。正如上面提到的評論,檢查控制檯,看看是否有錯誤。例如 - 錯誤的Facebook應用程序ID;代碼中的其他地方發生JavaScript錯誤,導致頁面上的所有JS被破壞。 –