Browser 浏览器是否只在punycode域或整个url中编码?

Browser 浏览器是否只在punycode域或整个url中编码?,browser,idn,punycode,Browser,Idn,Punycode,我在阅读有关IDN同形异义词atack的文章时,并没有发现浏览器是在punycode中编码的,只包含域还是URL的其余部分(路径和查询)。所以我的问题是,流行的浏览器(FF、IE、Chrome、Safari、Opera)是否用punycode编码URL的其余部分(确切地说是IRI)?只有域名部分用punycode编码。这是由于对(传统)域名中允许的字符施加了限制。URL的路径部分没有这样的限制,因此经常使用UTF-8。我知道(或至少假设)您没有神奇的水晶球:-),我不希望得到明确的答案(或任何答

我在阅读有关IDN同形异义词atack的文章时,并没有发现浏览器是在punycode中编码的,只包含域还是URL的其余部分(路径和查询)。所以我的问题是,流行的浏览器(FF、IE、Chrome、Safari、Opera)是否用punycode编码URL的其余部分(确切地说是IRI)?

只有域名部分用punycode编码。这是由于对(传统)域名中允许的字符施加了限制。URL的路径部分没有这样的限制,因此经常使用UTF-8。

我知道(或至少假设)您没有神奇的水晶球:-),我不希望得到明确的答案(或任何答案),但如果您能分享您的意见,一些浏览器开始在路径部分使用punycode的可能性有多大?我认为这种可能性非常低,如果不是零的话。IDNA仅用于域名。我所知道的一切都可以在以下位置找到:URL的路径部分不只是使用UTF-8,它通常使用UTF-8编码版本字节的百分比编码版本(因为在传递路径时,服务器假定实际呈现的字节为ISO 8859-1)。punycoding仅用于域名(事实上,它仅用于单个片段),因为它是在URL检索的一个完全不同的(且更早)阶段处理的。@DonalFellows是正确的,因为URL不允许UTF-8。但是,URL的RFC()将字符定义为ASCII,而不是8859-1(拉丁文1)。无论哪种方式,路径中的所有unicode数据都应以百分比编码值的形式通过。