Http 带有/的查询字符串有效吗?

Http 带有/的查询字符串有效吗?,http,uri,query-string,uriencoding,Http,Uri,Query String,Uriencoding,由于与附属合作伙伴的错误沟通,我们正在处理他们在我们服务器上调用的URL,该URL已被混淆 这是他们应该在我们的服务器上调用的URL: /AAAAAAAA/?b=CCCCCCC 不幸的是,他们的系统就是这样实现的 ?b=CCCCCCC/AAAAAAA 我可以很容易地解析出组件,但我担心带有/的查询字符串参数实际上不是有效的URL URL中的/是否实际有效?或者我是否应该关注。在什么情况下,未编码的/会导致查询字符串出现问题。尽管我从未遇到过问题,但根据以下规定,技术上不允许出现问题: 在

由于与附属合作伙伴的错误沟通,我们正在处理他们在我们服务器上调用的URL,该URL已被混淆

这是他们应该在我们的服务器上调用的URL:

 /AAAAAAAA/?b=CCCCCCC
不幸的是,他们的系统就是这样实现的

 ?b=CCCCCCC/AAAAAAA
我可以很容易地解析出组件,但我担心带有/的查询字符串参数实际上不是有效的URL


URL中的/是否实际有效?或者我是否应该关注。在什么情况下,未编码的/会导致查询字符串出现问题。

尽管我从未遇到过问题,但根据以下规定,技术上不允许出现问题:

在查询组件中,保留字符“;”、“/”、“?”、“:”、“@”、“&”、“=”、“+”、“、”和“$”

但正如我所说,我从来没有遇到过任何问题。我认为这是旧浏览器的最大问题,但也许有人能更清楚地说明这会导致什么问题?

根据第3.4节,斜杠是URL查询部分的“保留字符”,因此根据第2.2节,必须对其进行编码。也就是说,查询部分可以包含
%2F
,但不应包含
/
,根据(从2005年开始),是的,查询组件中允许
/
。这是查询字符串的BNF:(在中的附录A中)

说明书上说:

  • 字符斜杠(“/”)和问号(“?”)可以表示查询组件中的数据
  • 由于查询组件通常以“key=value”对的形式携带标识信息,并且一个经常使用的值是对另一个URI的引用,因此有时避免对这些字符进行百分比编码对可用性更好
这是一个相关的问题:

我觉得从技术上讲这是不允许的(原因很明显),但我认为这基本上是可以的。话虽如此,我想知道代理、旧浏览器、安全工具等是否会出现一些古怪的事情。@Simon-我还没有发现任何不良影响,但我对它们的使用通常非常具体,例如,
Login?ru=Route/subcure/Category/45
。好吧,希望我们一周都没事。谢谢-很惊讶有人居然这么快就用“/”找到了我的问题!提供的链接已经死了,但实际上有什么东西会断开吗?我想得到固定的网址格式,但这将需要一个星期的下一个build@Simon如果有人知道这个问题的答案的话,那就是你。我在chrome或IE8中不会遇到这个问题,但对于使用Mosaic 1.0的人来说可能会遇到这个问题?我不知道;-)我喜欢这个问题的URL解析出/的方式:-)这应该是正确的答案,因为RFC3986是2396的替代品。
query         = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"