HTTP协议详解:从基础到高级特性
1. 国际化域名与URI/URL路径处理
国际化域名带来了“同形异义字符攻击”的可能性。许多Unicode字符外观相似,例如俄语的“o”(U+043E)、希腊语的“o”(U+03BF)和英语的“o”(U+006F)。使用同形异义字符的域名,如用两个俄语“o”的“google.com”,可能会造成混乱。已知的防御方法包括始终显示Punycode(如使用Punycode转换器将其转换为xn—ggle-55da.com)。
URI/URL中的路径处理更为复杂,因为它指向的是可能在特定本地化环境中运行的HTTP服务器的相对路径。其编码可能不是UTF - 8,甚至不是Unicode。IRI(国际化资源标识符)通过先将任何本地化字符串转换为UTF - 8,然后对任何非ASCII字节进行百分比转义来处理这个问题。相关更多信息可参考W3C页面“An Introduction to Multilingual Web Addresses”(https://www.w3.org/International/articles/idn-and-iri/)。Go语言在net/url包中有QueryEscape/QueryUnescape函数,在Go 1.8版本中有PathEscape/PathUnescape函数来进行百分比转换。
2. HTTP协议的特点与版本
HTTP是一种无状态、无连接、可靠的协议。在最简单的形式中,用户代理的每个请求都能得到可靠处理,然后连接断开。
HTTP有以下几个版本:
| 版本 | 发布时间 | 状态 |
| ---- | ---- | ---- |
| 0.9 | 1991年 |
超级会员免费看
订阅专栏 解锁全文

1291

被折叠的 条评论
为什么被折叠?



