我们应该在URL的搜索部分编码斜杠吗?

我们应该在URL的搜索部分编码斜杠吗?,url,rfc,Url,Rfc,“搜索部分”中正向斜杠的编码不精确: 如果方案中保留了与八位字节对应的字符,则必须对八位字节进行编码 仅字母数字、特殊字符“$-551;+!*”()、”和 可以使用用于保留目的的保留字符 在URL中未编码 在'path'和'searchpart'组件中,“/”、“;”、“?”是保留的 您知道URL中搜索部分“/”的“保留用途”是什么吗 是否有任何真正的理由遵循规范并编码前斜杠提供了这一点 我的服务器处理未编码的斜杠 当我需要不断解码带有斜杠的字母数字URL参数时,这让我抓狂 下面是一个活生生

“搜索部分”中正向斜杠的编码不精确:

如果方案中保留了与八位字节对应的字符,则必须对八位字节进行编码

仅字母数字、特殊字符“$-551;+!*”()、”和 可以使用用于保留目的的保留字符 在URL中未编码

在'path'和'searchpart'组件中,“/”、“;”、“?”是保留的

您知道URL中搜索部分“/”的“保留用途”是什么吗

是否有任何真正的理由遵循规范并编码前斜杠提供了这一点 我的服务器处理未编码的斜杠

当我需要不断解码带有斜杠的字母数字URL参数时,这让我抓狂

下面是一个活生生的例子:

vs

请注意,RFC1738更新了(虽然没有过时,但我认为这表明它的目的是澄清而不是反驳)

RFC 3986在第3.4节中说,URI的
查询部分的语法是:

query       = *( pchar / "/" / "?" )
URI的ABNF可方便地收集在附录A中,其中指出

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded   = "%" HEXDIG HEXDIG
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="
这非常明确地表明斜杠在查询部分是合法的,因此不需要编码http://localhost/login?url=/a/path/to/protected/content
就这么好,
http://localhost/login?abc123-.+~!$&'()*+,;=%00/?:@


第2.4节指出,只有当希望在URI的一部分中包含保留字符时(此处不适用),才需要对字符进行编码。

一些示例可以补充这个问题。