【问题标题】:Tiny URL that randomly opens a URL from list of URLs?从 URL 列表中随机打开 URL 的小 URL?
【发布时间】:2017-08-10 02:55:48
【问题描述】:

我正在尝试创建一个微小的 URL,当单击该 URL 时,它会重定向到从预先确定的 URL 列表中随机选择的 URL。我知道我可以使用 HTML 和 Javascript 来实现这个服务器端,但我希望它完全通过一个很小的 ​​URL 来运行。

基本上http://www.5050.degstu.com/ 是如何做到的,但没有主机限制或 URL 限制。

我几乎不知道从哪里开始,并且惊讶于这还不存在。是不是因为我无法理解的原因根本不可能?我对开发世界还比较陌生,可能还没有完全掌握其中的复杂性。

提前致谢。

【问题讨论】:

  • 当您说“点击时”时,是否意味着用户不能直接在浏览器的地址栏中输入 URL?如果您只希望页面上的链接可以转到随机选择的位置,这很容易,但链接元素本身没有 URL。
  • @nnnnnn 用户应该能够将 URL 放在他们的地址栏中,或者单击它作为超链接,感谢您的澄清
  • 您所说的“纯粹来自一个小 URL 的功能”是什么意思?您基本上有几个选择:A) HTTP 重定向(例如 HTTP 302 - 临时移动)。 B) 刷新元标记 (HTML) 或刷新 HTTP 标头。 C) 使用随机页面托管 iframe。 D) 在客户端刷新 Javascript。 E) 充当 HTTP 代理/负载平衡器并自己连接到其他站点并返回其内容。
  • @PMV 是的,对不起,我还在学习。我认为我没有正确理解 TinyURL 过程,因为我相信它可以将一组 URL 缩短为 1 个 TinyURL,然后在单击时以随机选择其中一个 URL 的方式运行。但是,我意识到执行选择的功能必须存储在某个地方。 5050.degstu.com 是如何做到这一点的?因为它基本上提供了一个随机重定向到两个可能 URL 之一的链接。它是否将 URL 存储在数据库中?

标签: javascript arrays list url web


【解决方案1】:

把它放在 TinyURL 指向的页面的脚本中:

var urls = ['url1', 'url2', 'url3'];

var url = urls[Math.floor(Math.random() * urls.length)];

window.open(url, '_self');

它从 URL 列表中选择一个随机 URL,然后在同一个选项卡中打开它。

【讨论】:

【解决方案2】:

有兴趣的一起来看看5050是怎么做的吧。

我刚刚做了一个快速的,并记录了我与 fiddler 的连接。这是我得到的:

请求:

GET http://5050.degstu.com/v.php?l=qmf72tfeaya5y78 HTTP/1.1
Host: 5050.degstu.com
Connection: keep-alive

(以及其他不相关的标题)

回复:

HTTP/1.1 302 Moved Temporarily
Server: nginx/1.12.1
Date: Thu, 10 Aug 2017 03:39:24 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
Location: http://www.vimeo.com

所以他们使用了我评论中的选项 A - 服务器保留某种数据库,将“qmf72tfeaya5y78”与我提供的两个 URL(YouTube 和 Vimeo 的主页)相匹配,然后服务器将 HTTP 302 发送回告诉我的浏览器重定向到其中一个页面。

【讨论】:

  • 这太好了,感谢您的解释,现在更有意义了!
猜你喜欢
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 2019-09-20
  • 2018-07-02
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多