为何浏览器会对URI执行百分比解码?(Chrome/Firefox场景)
为什么输入带
%2F的URL后请求头里的地址会自动转换? 这事儿本质上是浏览器对URL编码的自动处理逻辑在起作用,我给你掰扯明白:
先搞懂
%2F是什么:它是斜杠/的URL百分号编码形式。URL编码原本是用来转义那些不能直接出现在URL里的字符,但斜杠本身是URL路径的核心分隔符,属于HTTP协议定义的「保留字符」。浏览器的自动解码行为:当你在地址栏输入包含
%2F的URL时,浏览器会默认把这个编码后的字符解码回原始的/。一方面是为了让地址栏显示更直观易读的真实路径,另一方面也是严格遵循HTTP协议对URL路径的规范——路径部分的分隔符必须是/,而不是编码后的%2F。请求头的同步变化:浏览器不仅会在地址栏展示解码后的URL,在向服务器发送请求时,也会使用解码后的路径。所以你查看请求头时,就会看到地址变成了
http://localhost:50102/my/test/one。
额外提一句:如果%2F是出现在URL的查询参数里(比如http://example.com?dir=my%2Ftest),浏览器通常不会解码它,但在路径部分,%2F一定会被自动解码,因为它属于路径结构的一部分。
内容的提问来源于stack exchange,提问作者Aaron Thomas
相关产品推荐
相关产品推荐

