2012-12-17 48 views
0

我們正在尋求允許用戶通過幾個不同的社交媒體網絡分享鏈接。 Tweet,Pin it和LinkedIn分享按鈕都可以工作,但我們遇到的問題是圍繞Facebook發送按鈕進行的​​。爲什麼Facebook發送按鈕彈出窗口關閉?

該按鈕似乎可以正常加載,但點擊該按鈕時會顯示「無法聯繫到www.website.com/page1.jsp?order_nbr=123456上的頁面」消息。

當使用對象調試@ Facebook的開發者網站上,一些有趣的事情發生了: 嘗試調試www.website.com/page1.jsp?order_nbr=123456刮的響應代碼是502錯誤(URL返回一個糟糕的HTTP響應代碼)。 試圖調試www.website.com/page1.jsp我們得到了200(正常響應)。 試圖調試m.website.com/page1.jspm.website.com/page1.jsp?order_nbr=123456,兩者都返回相同的502錯誤。

看起來像是在?之後的URL中有參數時出現問題,但是我們想知道是否還有其他需要設置的內容,或者這可能是服務器配置問題。

如果有技術上的解釋說明了Facebook如何刪除頁面,或者爲什麼他們的發送按鈕可能會得到502錯誤,而上面提到的其他操作正常?任何洞察力將不勝感激。

這裏是光禿禿的骨頭代碼我們爲了測試移動網站上剝離下來到:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#"> 

<head> 
    <title>Testing - Order #123456</title> 
    <link rel="shortcut icon" href="/favicon.ico" /> 
    <link rel="icon" href="/favicon.ico" /> 
    <link rel="apple-touch-icon" href="/icon.png" /> 
    <meta http-equiv="Content-Style-Type" content="text/css" /> 
    <meta name="viewport" content="width=device-width, user-scalable=yes" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <link href="/css/test.css" rel="stylesheet" type="text/css" /> 
    <meta property="og:title" content="Test - Order #123456" /> 
    <meta property="og:type" content="website" /> 
    <meta property="og:url" content="http://m.website.com/page1.jsp?order_nbr=123456"/> 
    <meta property="og:image" content="../../images/mobile_files/logo.png" /> 

<!--asynchronous loader--> 
<script src="../../js/init.js" type="text/javascript"> </script> 

</head> 

<body> 
     <DIV id="fb-root"></DIV> 

    <DIV id="menu"> 
     <DIV style="float: left; padding:2px; "><fb:send ref="top_left_m" ></fb:send></DIV> 
     <DIV style="float: left; padding:2px;"><a href="https://twitter.com/share" class="twitter-share-button" data-count="none">Tweet</a> </DIV> 
     <DIV style="float: left; padding:2px;"> <a data-pin-config="none" data-pin-do="buttonPin" href="//pinterest.com/pin/create/button/?url=http%3A%2F%2Fm.website.com%2Fjsp%2Forder.jsp%3Fjob_order_id%3D%3C%25%3DjobOrderId%25%3E&media=http%3A%2F%2Fm.website.com%2Fimages%2Fmobile_files%2Flogo.png&description=Testing..."><img src="//assets.pinterest.com/images/pidgets/pin_it_button.png" /></a> </DIV> 
     <DIV style="float: left; padding:2px;"><script type="IN/Share"></script> </DIV> 

     <DIV style="clear:both;"></DIV> 
</DIV> 

</body> 
</html> 

UPDATE:調試器的輸出是不同的比它有一天,我相信由於重新部署和/或緩存(服務器和/或本地)先前的測試,但是仍然存在兩個主要問題。
。#1 - 主要的網站被罰款(返回碼200)。該移動網站返回502並且不返回任何內容。
#2 - 如果我沒有登錄到Facebook,會彈出一個要求我登錄的窗口。一旦我這樣做,窗口就會完全消失。如果我登錄Facebook,彈出窗口會短暫出現,然後完全消失。
。#3 - URL中的參數已被排除爲問題。

基於最大問題的性質(#2)...我將改變我的問題爲... 「爲什麼Facebook發送按鈕彈出窗口關閉?
(我將打破#1到一個單獨的問題,如果這是比較合適的,但我想我的問題全部是最好的留下一個問題,一切服務)

以防萬一它是相關的,這裏是JS非同步裝載機:

(function(doc, script) { 
    var js, 
    fjs = doc.getElementsByTagName(script)[0], 
    add = function(url, id) { 
    if (doc.getElementById(id)) {return;} 
      js = doc.createElement(script); 
      js.src = url; 
      id && (js.id = id); 
      fjs.parentNode.insertBefore(js, fjs); 
    }; 
    // Facebook SDK 
    add('//connect.facebook.net/en_US/all.js#xfbml=1', 'facebook-jssdk'); 
    // Pinterest 
    add('http://assets.pinterest.com/js/pinit.js'); 
    // Twitter SDK 
    add('//platform.twitter.com/widgets.js', 'twitter-wjs'); 
    // LinkedIN 
    add('//platform.linkedin.com/in.js'); 
}(document, 'script')); 
+0

頁面上的'echo'工具的輸出是什麼?請參閱:https://developers.facebook.com/tools/debug/og/echo?q= ' –

+0

對於返回的三個502錯誤,echo的輸出是「Document returned no data」,對於沒有參數它顯示整個頁面的來源。 – Dallas

+0

由於此網站是針對移動設備的,因此您是否知道發生了可能會阻止服務器顯示該網頁的任何用戶代理嗅探? –

回答

0

問題在於Facebook發送範圍請求作爲請求的一部分。如果在範圍內(0-52K)則失敗,但大於此範圍的頁面可能會損壞。似乎Oracle的舊版本在處理範圍時存在問題,因此您需要從請求頭中除去Facebook的範圍請求。