URL 大小写问题

本文探讨了在使用Tomcat服务器部署Servlet程序时遇到的URL大小写敏感问题,并提供了通过配置<Context>元素的caseSensitive属性解决此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前几天看计算机网络,提到统一资源定位符“URL里面的字母不区分大小写 ”。但今天在编写servlet程序时,用tomcat服务器。发现里面是区分大小写的。上网查询后发现问题可能出在java区分大小写。

解决方案:可以在其<Context >元素中增加“caseSensitive="false"”来使其不区分大小写。 只是这样设置只能保证该Context定义的路径下的内容不区分大小写。其他Context定义的路径仍然区分大小写,除非也加上 caseSensitive="false"的选项。

 

引用资料:《计算机网络》第五版 谢希仁 P238 第第三段

### URL编码中的大小写处理 URL 编码是一种用于将不可打印字符或特殊字符转换为可传输形式的技术。在 URL 编码中,非 ASCII 字符以及一些保留字符会被替换为其对应的百分号 `%` 表示法,后面跟着该字符的十六进制值[^1]。 #### 大小写的规则 在 URL 编码过程中,十六进制数值可以由大写字母 A-F 或小写字母 a-f 来表示。然而,为了保持一致性并减少潜在冲突,RFC 3986 推荐使用 **大写字母** 的十六进制表示法来完成编码过程[^2]。这意味着,在标准实现中,像 `A` 到 `F` 这样的字母会优先被采用而不是它们的小写版本。 例如: - 空格字符 (` `) 被编码成 `%20`。 - 加号符号 (`+`) 如果不是查询参数的一部分,则应被编码为 `%2B`。 需要注意的是,尽管推荐使用大写形式,但在实际应用中也存在接受小写的情况;不过为了避免不必要的兼容性问题,建议始终遵循 RFC 标准的做法[^3]。 下面给出一个简单的 Python 实现例子展示如何手动执行这种带有固定大小写URL 百分比编码: ```python def url_encode(input_string): result = [] for char in input_string: if 'A' <= char <= 'Z' or 'a' <= char <= 'z' or '0' <= char <= '9': result.append(char) elif char == ' ': # Space should be encoded as %20 instead of + result.append('%20') else: hex_value = hex(ord(char))[2:].upper() # Convert to uppercase hexadecimal result.append(f"%{hex_value}") return ''.join(result) print(url_encode("Hello World!")) # Output: Hello%20World%21 ``` 此函数遍历输入字符串中的每一个字符,判断是否属于无需转义的安全集合(即英文字母和数字)。如果不是的话就将其转化为相应的ASCII码再进一步变换成带前缀‘%’的大写HEX串[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值