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