由于与合作伙伴的沟通有误,我们正在使用的URL在我们的服务器上被混淆了。
这是他们应该在我们的服务器上调用的URL:
/AAAAAAAA/?b=CCCCCCC不幸的是,它在他们的系统中实现为
?b=CCCCCCC/AAAAAAA我可以很容易地解析出组件,但我担心带有/的查询字符串参数实际上不是有效的URL。
URL中的/是否真的有效--或者我应该关注一下。在什么情况下,未编码/会导致查询字符串中出现问题。
发布于 2010-02-03 08:04:36
尽管我从来没有遇到过问题,但根据RFC 2396,它们在技术上是不被允许的
在查询组件中,";“、"/”、"?“、":”、"@“、"&”、"=“、"+”、“、”和"$“字符是保留的。
但就像我说的...我从来没有遇到过任何问题。我认为这是一个老的浏览器的问题,但也许有人可以更多地阐明这导致的问题?
发布于 2011-04-17 10:35:25
根据RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (从2005年开始),是的,在查询组件中允许使用/。这是查询字符串的BNF:(在RFC 3986的附录A中)
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"说明书上写着:
这里有一个相关的问题:Query string: Can a query string contain a URL that also contains query strings?
发布于 2010-02-03 08:07:35
根据RFC 2396 3.4节,斜杠是URL的查询部分中的“保留字符”,因此根据第2.2节,必须对其进行编码。也就是说,查询部分可以包含%2F,但不应该包含/。
https://stackoverflow.com/questions/2188645
复制相似问题