Почему всплывающее окно кнопки «Отправить» в Facebook закрывается?

Мы рассматриваем возможность предоставления пользователям возможности делиться ссылкой через несколько различных социальных сетей. Кнопки «Твитнуть», «Закрепить» и «Поделиться» в LinkedIn работают, но проблема, с которой мы сталкиваемся, связана с кнопкой «Отправить» в Facebook.

Кажется, что кнопка загружается нормально, но при нажатии на нее появляется сообщение о том, что «страница по адресу www.website.com/page1.jsp?order_nbr=123456 недоступна».

При использовании отладчика объектов на сайте Facebook Developers происходит кое-что интересное: Попытка отладки www.website.com/page1.jsp?order_nbr=123456 Код ответа очистки — ошибка 502 (URL вернул неверный код ответа HTTP). При попытке отладки www.website.com/page1.jsp получаем 200 (нормальный ответ). При попытке отладки m.website.com/page1.jsp или m.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>

ОБНОВЛЕНИЕ: выходные данные отладчика отличаются от того, что было на днях, я полагаю, из-за повторного развертывания и/или кэширования (серверных и/или локальных) предыдущих тестов, однако остаются две основные проблемы.
.#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'));

person Dallas    schedule 17.12.2012    source источник
comment
Что выдает инструмент echo на вашей странице? См.: https://developers.facebook.com/tools/debug/og/echo?q=<YOUR URL>   -  person Jimmy Sawczuk    schedule 17.12.2012
comment
Вывод эха: Документ не вернул данных для трех возвращаемых ошибок 502, а для основного сайта без параметров он показывает источник для всей страницы.   -  person Dallas    schedule 17.12.2012
comment
Поскольку этот сайт предназначен для мобильных устройств, знаете ли вы о каком-либо сниффинге пользовательского агента, который может помешать серверу показать эту страницу?   -  person Jimmy Sawczuk    schedule 17.12.2012
comment
Я не подумал об этом. Мы могли бы включить User-Agent парсера FB (я полагаю, facebookexternalhit), чтобы проверить это, и попробуем это позже сегодня. Однако вопрос о параметрах все еще остается на основном сайте. Мы не к любому UA нюхать там.   -  person Dallas    schedule 17.12.2012
comment
Теперь, когда я думаю об этом, у меня все наоборот. На основном сайте есть UA-сниффинг и перенаправление (правда, не на странице page1.jsp main или mobile), а на мобильной версии вообще нет никакого сниффинга.   -  person Dallas    schedule 17.12.2012


Ответы (1)


Проблема в том, что Facebook отправляет запрос диапазона как часть запроса. Сбой, если в пределах диапазона (0-52 КБ), однако страницы, превышающие этот диапазон, очищаются нормально. Кажется, в старых версиях Oracle есть проблема с диапазоном, поэтому вам нужно удалить запрос диапазона Facebook из заголовков запроса.

person Dallas    schedule 21.04.2013