提问人:Code Lover 提问时间:11/22/2012 更新时间:11/22/2020 访问量:54364
URL结构:小写VS大写
URL Structure: Lower case VS Upper case
问:
当我浏览一些网站时,我只是在脑海中触发了它们在 url 中具有大写和小写组合之类的东西http://www.domain.com/Home/Article
现在,据我所知,我们应该始终在 url 中使用小写字母,但不知道技术原因。我想向您的专家学习,以澄清这个概念,为什么在 url 中使用小写字母。大写url的优点和缺点是什么。
答:
域部分不区分大小写。 工程。您可以根据需要添加大写字母,但通常没有理由这样做,并且如下面的评论所述,可能会损害您的 SEO 排名。GoOgLe.CoM
路径部分区分大小写,是否区分大小写,具体取决于服务器环境和服务器。通常,Windows 计算机不区分大小写,而 Linux 计算机区分大小写。这意味着您应该坚持使用小写字母,否则您可能会引入一个很难找到的错误(不匹配的情况,在开发服务器上无关紧要)。
查询字符串部分按原样可供服务器使用。您可以根据需要轻松使用混合大小写,或丢弃大小写 ()。这也意味着使用 base64 编码的密钥将起作用。但是,您不能指望用户正确键入该内容。toLowerCase(...)
哈希部分(称为“片段标识符”)仅对客户端代码可用,而对服务器不可用。Javascript 可以随心所欲地区分大小写,浏览器也是如此。 将滚动到具有 ID 的元素,但不会。url#a
a
url#A
评论
/Home
/home
我知道你问的是技术原因,但从用户体验的角度来看,这也值得考虑。
假设您有一个带有大写字符的 URL,并且出于论据的考虑,该 URL 已在印刷媒体上分发。当用户在他们的浏览器中输入该 URL 时,他们很可能被迫匹配该大小写(或者如果您的 Web 服务器区分大小写,则被迫匹配指定的大小写),最终您给了他们更多的工作要做,因为他们也必须考虑大小写。毕竟,他们不知道您的服务器是否区分大小写,并且他们过去可能遇到过区分大小写的 Web 服务器的 404。
如果您的服务器区分大小写,并且您使用的是混合大小写的 URL,则为用户提供了更大的空间来错误键入 URL。此外,假设您有 URL www.example.com/Contact。很容易混淆大写和小写的“c”(特别是如果它是用手写复制的),如果用户忽略这一点并使用错误的大小写,他们可能永远无法访问您的内容。
考虑到所有这些,请考虑 www.example.com/News/Articles/FreeIceCreamForAll。在键盘上,这并不难,但在移动设备上考虑这一点,输入会非常繁琐。
如果用户想要从地址栏中写下 URL,反之亦然。他们可能觉得他们需要与案例相匹配,最终给他们更多的工作要做,并增加出错的可能性。
总结;保持 URL 小写。
关于此问题的安全方面:
实际上,混合使用大写和小写是有充分安全理由的。
它具有迷惑和阻止攻击者的效果!
在人类对话中,人们很容易混淆大写和小写的用法。
如果“标识符、密码或 url”包含大写和小写,人类就无法清晰地“说出”单词。
这有助于确保站点子部分的数据或密码的安全性,这些子部件是作为站点或其数据的“自动访问”部分的锁定或安全子部分的一部分提供的。
它类似于 NOT USING JSON。
JSON是“人类可读的文本”,因此JSON只是给所有攻击者(包括政府,谷歌等窃取您的想法和数据)......他们需要了解的几乎所有关于数据的信息......通过使用私人定制的非常快速的“二进制协议”来混淆它们要安全得多 - 使用您自己的“不可知的数据结构”......但要小心,因为实际上有可能混淆你自己或你自己的开发团队。
您的所有安全层和协议都必须“妥善管理”,以避免混淆。
因此,通过简单地使用完全非常规的系统,可以提高人类攻击者(和一些机器人)的站点和数据安全性(即,为什么有人想要使用“标准安全协议”,而通过一些简单的重量级先验计算,它们都可以很容易地被破解)。
只是“加盐和散列”一切 - 再加上一些额外的额外定制安全性 - 这只是常识!
结论:以上所有答案都非常清晰和正确 - 但你也可以愉快地利用这些知识来迷惑潜在的攻击者。
评论
我将不得不不同意所有关于这一点的既定智慧,所以我可能会被否决,但是:
如果将所有大小写混合的 URL 重定向到大小写正确的 URL,则可以解决上述所有问题。因此,这个论点似乎来自传统和偏好。URL 的重点是要有一个用户友好的页面表示,如果你的 URL 对大写更友好,为什么不使用它呢?比较:
moviesforyoutowatch.com/batman-vii-the-dark-knight-whatevers MoviesForYouToWatch.com/Batman-VII-The-Dark-Knight-Whatevers
I find the mixed case version superior for the purpose. If there's a technical reason that can't be solved with a lower-case compare and redirect, please share it.
评论