Как сервер Twitter узнает один идентификатор твита из фрагмента фрагмента URL? - PullRequest
2 голосов
/ 07 января 2011

Обновление:

Оказывается, Twitter не знает ни одного идентификатора твита из фрагмента фрагмента URL.У него есть «последний твит из последнего просмотренного твиттера» во встроенном JavaScript.Если вы просматриваете чей-то профиль, а затем переходите к его последней странице в Твиттере.Встроенный JavaScript содержит текст последнего твита автора.


Исходный вопрос:

Каждый твит имеет один URL, например http://twitter.com/#!/DeliciousHot/status/23189589820702720. Идентификатор твита (/ DeliciousHot / status / 23189589820702720) находится в фрагменте фрагмента URL, которыйна самом деле не отправляется на сервер.

Первоначально я думал, что это работает следующим образом: URL-ответ не содержит этой информации, специфичной для твита.Это модуль JavaScript, который извлекает идентификатор твита из текущего URL браузера и получает полезную нагрузку твита с помощью AJAX.Затем содержимое страницы обновляется с полезной нагрузкой твита.

К моему удивлению, это не сработает!

С помощью Firebug вы можете просмотреть ответ http://twitter.com/#!/DeliciousHot/status/23189589820702720имеет полезный текст «10 знаков истинного джентльмена» в виде встроенного JavaScript.Полезная нагрузка твита не извлекается другим AJAX.

Итак, как серверу Twitter узнать ожидаемый идентификатор твита, даже если он находится в сегменте фрагмента URL?

Ответы [ 2 ]

1 голос
/ 07 января 2011

Два метода:

  1. Когда вы не вошли в систему, он имеет перенаправление:

    (function(g){var a=location.href.split("#!")[1];if(a){window.location.hash =
      "";g.location.pathname = g.HBR = a.replace(/^([^/])/,"/$1");}})(window);
    
  2. Когда вы вошли в систему, он вызывает api.twitter.com:

    http://api.twitter.com/1/statuses/show.json?include_entities=true&contributor_details=true&id=23189589820702720
    

Я понятия не имею, где в коде это происходит, но инструменты разработчика зарегистрировали его.

1 голос
/ 07 января 2011

Это делается через JavaScript.JavaScript сканирует местоположение фрагмента URL и перенаправляет страницу.Вот строка, которая делает это в URL twitter.com:

(function(g){var a=location.href.split("#!")[1];if(a){window.location.hash = "";g.location.pathname = g.HBR = a.replace(/^([^/])/,"/$1");}})(window);
...