为什么cookie路径区分大小写?

时间:2008-12-30 10:49:39

标签: http browser cookies

我几周前第一次意识到,在设置http cookie时,虽然域名不区分大小写,但路径是。

一段时间为

存储的cookie

http://SomeWebSite.com

可以使用

阅读

http://somewebsite.com

存储的Cookie

http://somewebsite.com/SomePath

无法使用

阅读

http://somewebsite.com/somepath

根本找不到。

正如RFC中明确说明的那样(参见第3.3.3节here)我怀疑这是一种疏忽,但作为一名用户,我没有接受过将网址视为区分大小写的文本和网络服务器的培训,据我所知,似乎不介意任何一种方式,并且会很好地提供页面;所以我想知道 - 这个决定背后的理由是什么?

任何人都可以解释一下吗?

3 个答案:

答案 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)

始终将所有内容视为区分大小写。