【问题标题】:Can i use "==" in a http query string?我可以在 http 查询字符串中使用“==”吗?
【发布时间】:2015-01-29 17:44:49
【问题描述】:

如果我有如下查询字符串:

?key1=val1&key2==val2

应该如何解析?

喜欢:

key   : key2= 
value : val2

或

key   : key2 
value : =val2

在这种情况下,关键和价值是什么?

这是否允许在查询字符串中有 == 序列?

那么下面的查询字符串呢?

?key=val&=====

语法正确吗?

谢谢

【问题讨论】:

  • 我认为在实践中这将取决于你想用它们做什么。
  • 我从未尝试过,但我认为如果你尝试阅读key2,你会得到=vale2。
  • 我不知道语法规则,但我绝对不建议这样做。你想完成什么?
  • 从 PHP 实现来看(SAPI.treat_data,parse_str 和内部参数解析都使用),= 符号始终被视为分隔键和值的符号,系统-级别分隔符(通常为&)用于分隔对。所以在第一种情况下,key2 将是键,=val2 将是值。在第二种情况下,===== 的最后一系列将被忽略,因为那里没有提取密钥。
  • 但是,我不确定所有查询解析器实现是否都遵循相同的例程。这取决于实施,因为 w3 只提供了如何构建查询字符串的建议 (source)。

标签: http query-string


【解决方案1】:

如果您尝试使用这样的查询字符串,我认为您可能会遇到特定于实现的行为,但至少就 .NET 的 HttpUtility.ParseQueryString() 而言,故障是:

key1=val1&key2==val2

key1 - val1
key2 - =val2


key=val&=====

key - val
    - ====     (key is blank, value is four =)

所以这基本上相当于在& 上拆分查询字符串,然后在第一个= 上拆分每个段。

【讨论】:

  • Java servlet 中的相同行为 (HttpServletRequest.getParameter())
猜你喜欢
  • 2012-05-21
  • 2015-11-27
  • 2016-03-03
  • 2013-03-21
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
相关资源
最近更新 更多