我正在构建一个小的URL Shortener服务,其中一个要求是该工具必须能够识别明确缩短的URL以再次提供哈希值,而不是生成新的哈希值。
为了有效地做到这一点,我必须将任何给定的URL分解为小部分,并以在整个系统中统一的方式存储它们。
例如:
http://subdomain.domain.com:8081/example.php?query=true#hash
可以翻译成小部分:
{
protocol: "http:",
hostname: "domain.com",
subdomain: "subdomain",
port: "8081",
pathname: "/example.php",
query: "query=true",
hash: "#hash"
}
有了这些部分,我再一次将它们放在一起制作一个URL。
现在想象一下比较时的情况(参考文献#1):
http://www.iana.org/domains/reserved/
和(参考#2):
http:////www.iana.org//domains//reserved
甚至(参考#3):
http://www.iana.org//domains\\/reserved
字符串完全不同,但是当它们打入时它们都返回相同的页面(我相信浏览器会更正它)。为了将它们检测为相同的URL,我添加了另一个简单的字符串替换层以便标准化(或者是正确的动词):
protocol + "//" + subdomain + hostname + ":" + portname
标准化网址的第一部分。/
中的单个斜杠/
替换所有多个斜杠pathname
。query + hash
以完成网址。我的问题: