web-services - 短网址服务如何运作?

标签 web-services url url-shortener bit.ly short-url

TinyURL 等服务如何?或 Metamark工作吗?
他们是否只是简单地将微小的 URL 键与 [虚拟?] 网页相关联,该网页仅提供对原始 URL 的“HTTP 重定向”?还是有更多的“魔力”?

[原文] 我经常使用 TinyURL、Metamark 等 URL 缩短服务,但每次使用时,我都想知道这些服务是如何工作的。他们是创建一个将重定向到另一个页面的新文件还是使用子域?

最佳答案

不,他们不使用文件。当您单击这样的链接时,会向他们的服务器发送一个带有完整 URL 的 HTTP 请求,例如 http://bit.ly/duSk8wK (链接到这个问题)。他们读取映射到他们的数据库的路径部分(此处为 duSk8wK)。在数据库中,他们会找到描述(有时)、您的姓名(有时)和真实 URL。然后他们发出一个重定向,这是一个 HTTP 302 响应和 header 中的目标 URL。

这种直接重定向很重要。如果您要使用文件或首先加载 HTML 然后重定向,浏览器会将 TinyUrl 添加到历史记录中,这不是您想要的。此外,重定向到的站点会将引荐来源网址(您最初来自的站点)视为 TinyUrl 链接所在的站点(即 twitter.com,您自己的站点,无论链接在哪里)。这同样重要,以便网站所有者可以看到人们来自哪里。如果页面被加载并重定向,这也将不起作用。

PS:重定向的类型更多。 HTTP 301 表示:永久重定向。如果发生这种情况,浏览器将不再请求 bit.ly 或 TinyUrl 站点,并且这些站点想要计算点击次数。这就是使用 HTTP 302 的原因,它是一种临时重定向。浏览器会再次询问 TinyUrl.com 或 bit.ly,这样就可以为您计算点击次数(一些小型 url 服务提供此功能)。

关于web-services - 短网址服务如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562367/

相关文章:

asp.net - 谷歌 url 缩短 api key 是否只能在 1 台计算机上工作?

c# - webservice从webMethod参数中删除NameSpace的问题

asp.net - Whatsapp 共享链接无法在移动设备上使用

php - 从mysql数据库获取BLOB到android

PHP 站点 URL ID 请帮忙!

java - URL.openStream 抛出错误

php - 如何使用 PHP 将数据库中的 URL 代码附加到域名并重定向?

url-shortener - URL 缩短器可以防止难看的词吗?

javascript - 如何解析从 jquery 作为响应文本接收到的 xml 数据

java - 将 JSON URL 传递给 java Restful WebService