我几周前第一次意识到,在设置http cookie时,虽然域名不区分大小写,但路径是。
一段时间为
存储的cookie http://SomeWebSite.com
可以使用
阅读 http://somewebsite.com
为
存储的Cookie http://somewebsite.com/SomePath
无法使用
阅读 http://somewebsite.com/somepath
根本找不到。
正如RFC中明确说明的那样(参见第3.3.3节here)我怀疑这是一种疏忽,但作为一名用户,我没有接受过将网址视为区分大小写的文本和网络服务器的培训,据我所知,似乎不介意任何一种方式,并且会很好地提供页面;所以我想知道 - 这个决定背后的理由是什么?
任何人都可以解释一下吗?
答案 0 :(得分:16)
大多数Web服务器都提供了防止白痴的机制。我所知道的两个常见的是在目录名称末尾添加斜杠(http://example.com/x
=> http://example.com/x/
)并更正或忽略大小写:(http://stackoverflow.com/ABOUT
与{{1}相同})。但是,这是不 Web服务器的要求,浏览器知道这一点。 http://stackoverflow.com/about
可以提供与http://stackoverflow.com/ABOUT
完全不同的页面。使用带有?x = y语法的GET变量很受欢迎,并且这些值有时会对服务器脚本区分大小写。这些可能的差异必须由浏览器正确处理(不将它们作为同一文档缓存,使用不同的cookie域,而不是对Javascript进行修改等)。
答案 1 :(得分:2)
如果路径区分大小写或对Web服务器不敏感。传统上类似于unix的OS:s区分大小写,而MS则不区分,并且可能反映在指定操作系统上开发的Web服务器中。
可能感兴趣的information about different filesystems链接。
更新
URL指向的资源取决于网络服务器。 http://some.domain.name/myFavouriteThings.txt可能是存储在我的服务器硬盘上的文本文件,但它也可以存储在数据库中,指向执行的脚本并返回一些随机行。它甚至不必是文本文件,它可以是图片,视频或任何其他可以数字传输的文件。
但在这种情况下,它被视为服务器上的文件。由于服务器是类Unix系统,因此服务器文件系统区分大小写。因此,只有在请求的大小写与磁盘上存储的文件匹配时才会找到该文件。如果服务器已存储在MS服务器上,文件系统不区分大小写,则请求的大小写可能无关紧要。
答案 2 :(得分:-2)
始终将所有内容视为区分大小写。