由于与附属合作伙伴的沟通不畅,我们正在处理他们在我们服务器上调用的 URL。
这是他们应该在我们的服务器上调用的 URL:
/AAAAAAAA/?b=CCCCCCC
不幸的是,它在他们的系统中是这样实现的
?b=CCCCCCC/AAAAAAA
我可以很容易地解析出组件,但我担心带有/的查询字符串参数实际上不是有效的 URL。
URL 中的/是否真的有效 - 或者我应该担心。在什么情况下可能未编码/导致查询字符串出现问题。
最佳答案
根据 RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (从 2005 年开始),是的,查询组件中允许使用 /
。这是查询字符串的 BNF:(在 RFC 3986 的附录 A 中)
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
规范说:
- 字符斜杠 ("/") 和问号 ("?") 可以表示查询组件中的数据。
- 由于查询组件通常用于以“key=value”对的形式携带标识信息,并且一个经常使用的值是对另一个 URI 的引用,有时避免使用百分比会更好-编码那些字符
这是一个相关的问题: Query string: Can a query string contain a URL that also contains query strings?
关于http - 带有 a/in 的查询字符串有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188645/