Включая Twitter Widgets.js через HTTPS

У меня небольшая проблема с смешанным контентом на обслуживаемых страницах HTTPS на нашем сайте, когда мы включаем http://platform.twitter.com/widgets.js

По-видимому, у Твиттера нет действительного сертификата - но, надеюсь, я ошибаюсь.

У любого из вас есть решение проблемы. Я искал здесь и в google для связанной проблемы, и нашел:

  • Служайте файл самостоятельно, используя HTTPS (но это дает мне что-то, что мне нужно будет поддерживать)
  • Исключить файл с моих страниц при обслуживании через HTTPS (что означает, что я теряю функциональность)

Предложения?

Обновление

См. резолюцию о принятом ответе ниже.

Ответ 1

Все сказанное здесь раньше уже не так. Главный виновник, файл widgets.js из Twitter теперь обслуживается через HTTPS с действующим сертификатом.

Смотрите сами: https://platform.twitter.com/widgets.js

Другими словами, теперь у вас есть кнопки Twitter, работающие над HTTPS без проблем!

Ответ 2

Существует более легкое обходное решение с использованием PHP, который не требует обслуживания, если Twitter не изменит местоположение своего JS файла.

Создайте файл PHP в папке JS, называемый twitter.platform.js.php или что-то в этом роде. Вставьте в файл следующее.

<?php
header('Content-type: text/javascript'); 
echo file_get_contents('http://platform.twitter.com/widgets.js');
?>

Затем включите PHP script вместо Twitter JS.

<script type="text/javascript" src="/location/to/js/twitter.platform.js.php"></script>

Вышеприведенный код вытащит незащищенный JS Twitter с их сервера и отобразит его как JavaScript и позволит вам обслуживать его через SSL без предупреждений, поскольку он будет происходить с вашего сайта.

Обновление: вышеописанное обходное решение, так как @paul-mcmahon, упомянутое в комментариях, вызывает ошибки SSL при использовании кнопки Twitter Follow.

Ответ 3

У этой же проблемы была проблема.

Было возможно обойти его, создав собственное всплывающее окно javascript и передав параметры в ручном режиме. Не зависит от каких-либо материалов внешнего твиттера.

Вам нужно будет загрузить изображение кнопки твиттера и сохранить его на локальных серверах.

<a href="#" onclick="window.open('http://twitter.com/share?text=your%20tweet&url=yoururl.com','Tweeter','menubar=no,width=550,height=450,toolbar=no'); return false;"><img src="/images/tweet.png"></a>

Вы можете использовать что-то вроде этого, чтобы закодировать текст твита и url, если необходимо: http://meyerweb.com/eric/tools/dencoder/

Вот описание параметров, которые вы можете передать этому URL: http://dev.twitter.com/pages/tweet_button#properties

Ответ 4

Мне удалось решить эту проблему, посмотрев код, стоящий за кнопкой Follow на https://dev.twitter.com

Вам не нужно включать http://platform.twitter.com/widgets.js. На том месте, где вы хотите использовать кнопку Follow, просто поставьте следующее:

<iframe src="https://dev.twitter.com/widgets/follow_button_dtc.html#_=YOUR_TWITTER_ID&amp;align=&amp;button=blue&amp;id=twitter_tweet_button_0&amp;lang=en&amp;link_color=0080A6&amp;screen_name=YOUR_TWITTER_HANDLE&amp;show_count=false&amp;show_screen_name=&amp;text_color=999999" allowtransparency="true" frameborder="0" scrolling="no" class="twitter-follow-button" style="width: 300px; height: 20px; " title=""></iframe>

Это позволяет вам иметь кнопку https Twitter Follow без сообщения о смешанном контенте.

Ответ 5

Существует этот script из miloops, который должен предоставить поддержку SSL Twitter с поддержкой Tweet-Count.

http://miloops.com/post/8138215285/implementing-ssl-tweet-button

Но у меня все еще есть предупреждение о смешанном содержании, потому что он все еще загружает <iframe> из Twitter, который затем загружает необеспеченный контент.: - (

Ответ 6

Хорошим решением для такого рода вещей является оставить http: или https: из атрибутов src или href включенного содержимого. Обычно браузер может определить, какой протокол использовать.

В вашем случае вы можете использовать //platform.twitter.com/widgets.js в качестве URL файла для файла, который теперь щелкает Twitterу https.