http - 带有 a/in 的查询字符串有效吗?

标签 http uri query-string uriencoding

由于与附属合作伙伴的沟通不畅,我们正在处理他们在我们服务器上调用的 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/

相关文章:

json - 是否可以为一个 HTTP 请求发送多个 HTTP 响应?

http - 如何正确解码 HTTP 流量

javascript - 将 URI 转换为 Windows 路径格式

java - 如何将 ActionListener 添加到扩展 JButton 的类的实例?

java - 从 Spring 支架 Controller 返回带有查询参数的响应

javascript - Ember js 链接到动态查询参数

http - Docker如何将请求(curl - get,post)一个容器发送到另一个容器

java - 如何在 Json 中发送 java.util.Date?

java - android camera : Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} 到 Activity

php - 使用 REGEX 过滤/清理 QUERY_STRING 以防止 RFI 攻击