twitter服务器如何从URL片段片段中知道单个推特ID?

twitter服务器如何从URL片段片段中知道单个推特ID?,url,twitter,fragment-identifier,Url,Twitter,Fragment Identifier,更新: 事实证明,Twitter并不知道URL片段片段中的单个tweet ID。它所做的是在内联JavaScript中包含“最近一次查看的twitter的最新tweet”。如果你查看某人的个人资料,然后转到他/她的最后一个推文页面。内联JavaScript包含作者最后一条推文的文本 原始问题: 每个tweet都有一个URL,例如。tweet标识(/DeliciousHot/status/23189589820702720)位于URL片段段中,该片段实际上并没有发送到服务器 最初,我认为它是这样

更新:

事实证明,Twitter并不知道URL片段片段中的单个tweet ID。它所做的是在内联JavaScript中包含“最近一次查看的twitter的最新tweet”。如果你查看某人的个人资料,然后转到他/她的最后一个推文页面。内联JavaScript包含作者最后一条推文的文本


原始问题:

每个tweet都有一个URL,例如。tweet标识(/DeliciousHot/status/23189589820702720)位于URL片段段中,该片段实际上并没有发送到服务器

最初,我认为它是这样工作的: URL响应没有此推特特定信息。JavaScript模块从当前浏览器URL中提取tweet id,并使用AJAX获取tweet负载。然后使用tweet负载更新页面内容

让我惊讶的是,它不是这样工作的

使用Firebug,您可以在内联JavaScript中查看tweet负载“真正绅士的10个标志”文本的响应。tweet负载不是由另一个AJAX获取的


那么,即使在URL片段段中,Twitter服务器如何知道预期的推特ID呢?

它是通过JavaScript实现的。JavaScript正在扫描URL片段的位置并重定向页面。在twitter.com的URL中有这样一行代码:

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

  • 当您未登录时,它有一个重定向:

    (function(g){var a=location.href.split("#!")[1];if(a){window.location.hash =
      "";g.location.pathname = g.HBR = a.replace(/^([^/])/,"/$1");}})(window);
    
  • 登录后,它会调用api.twitter.com:

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

  • 我不知道在代码中的什么地方会发生这种情况,但是开发人员工具记录了它。

    您是如何得到这个脚本片段的?我尝试了这个脚本。更改window.location.pathname将更改URL栏中的URL。但是,在中,URL栏没有改变。我的互联网连接速度很慢,我可以看到预重定向页面。@Morgan,URL为我更改(使用Chrome和IE)。啊,@jledev的回答解释了为什么@Morgan没有看到URL更改,我打赌。