假设我有这样的网址:
http://www.example.com?key=123&KEY=198
那将是
的结果request.querystring("key")
and
request.querystring("KEY")
我有点困惑。
答案 0 :(得分:54)
6.2.2.1。案例规范化
当URI使用通用语法的组件时,组件语法等价规则始终适用;即,方案和主机不区分大小写,因此应该标准化为小写。例如,URI等同于http://www.example.com/。
除非方案另有明确定义,否则假定其他通用语法组件区分大小写(参见第6.2.3节)。
请注意,scheme(此处为“http”),host(服务器名称)不区分大小写,但无论如何都应该是小写的。其余部分区分大小写,除非您使用的是明确表示它应该不敏感的不同方案。
因此,根据规范,密钥和KEY在所有基于http的URI中都是不同的东西。
答案 1 :(得分:43)
@ gbjbaanb的答案不正确:RFC只为查询字符串指定了允许的字符集。与URI的路径和片段组件一样,查询 URI组件仅对权限提供 资源。
完全取决于这些东西是否区分大小写。
对于C#和IIS,HttpRequest
对象中已解析的查询字符串的后备存储是System.Collections.Specialized.NameValueCollection
,恰好不区分大小写(通过默认值)。
由于该类提供的其他构造函数允许提供不同的相等比较器,因此绝对没有任何东西可以阻止实现使其区分大小写。
此外,由于页面本身(以及客户端javascript)可以访问原始URI,因此可以随意使用它。
如果查询字符串是作为HTML表单提交的结果而构建的,则键(名称)来自表单控件name
属性的值,HTML规范称这些属性区分大小写。但据我所知,没有人真的那么做。
因此,在一天结束时,您必须知道请求处理程序在查询字符串中期望的内容。它可能(或可能不是)区分大小写。
答案 2 :(得分:8)
根据hurl.it,key
将等于123
和KEY
,198
。它们可以作为两个不同的查询字符串访问。
答案 3 :(得分:1)
简而言之,在许多编程语言中,它们被认为是相等的。
URL的不同部分在区分大小写方面有所不同: