为什么 ASCII 字符集存在 URL 编码

Com*_*erd 6 security url encoding ascii

W3Schools中明确指出

URL 只能使用 ASCII 字符集通过 Internet 发送。

为什么 ASCII 字符(如 a 、 b 、 c )存在 URL 编码,而无需任何 URL 编码就可以通过互联网发送?

例如:当它可以作为“a”发送时,为什么要编码“a”

对 ASCII 字符进行编码的可能原因是什么?我能想到的唯一原因是黑客试图使其 URL 尽可能不可读以进行 XSS 攻击

uno*_*nor 5

STD 66,百分比编码

\n\n
\n

当八位字节的对应字符超出允许的集合或用作组件的分隔符或在组件内时,百分比编码机制用于表示组件中的数据八位字节。

\n
\n\n

所以百分比编码是一种转义机制:某些字符在 URI 组件中具有特殊含义(\xe2\x86\x92 它们被保留)。如果您想使用这样一个没有特殊含义的字符,可以对它进行百分比编码。

\n\n

非保留字符(如a, b, c, \xe2\x80\xa6)始终可以直接使用,但 it\xe2\x80\x99s 也允许对它们进行百分比编码。这样的 URI 是等效的

\n\n
\n

在将非保留字符替换为相应的百分比编码 US-ASCII 八位字节方面有所不同的 URI 是等效的:它们标识相同的资源。

\n
\n\n

为什么它\xe2\x80\x99s首先允许对非保留字符进行百分比编码?过时的 RFC 2396包含(我加粗):

\n\n
\n

可以在不更改 URI 语义的情况下转义非保留字符,但除非在不允许出现未转义字符的上下文中使用 URI,否则不应这样做。

\n
\n\n

我无法\xe2\x80\x99想出这样一个“上下文”的例子,但这句话表明可能有一些。

\n\n

另外,也许有些人/实现喜欢简单地对所有内容进行百分比编码(分隔符等除外),因此他们不必检查相应组件中是否/哪些字符需要百分比编码。

\n