【问题标题】:URL formatting: can '&' be included before '?' in the URL? [closed]URL 格式:可以在 '?' 之前包含 '&'在网址中? [关闭]
【发布时间】:2021-07-30 12:47:43
【问题描述】:

https://www.example.com/&audience=testingting?internal-abhishek-jwt=random_string

这是一个有效的网址吗?即可以先将 &audience?internal-abhishek-jwt 作为第二个查询参数吗?

请注意 audience& 作为前缀

【问题讨论】:

  • 查询字符串开始?.
  • 所以答案是否定的
  • 澄清术语 - & 不是前缀,而是分隔符
  • 这些同样有效:https://www.example.com/?internal-abhishek-jwt=random_string&audience=testingtinghttps://www.example.com/?audience=testingting&internal-abhishek-jwt=random_string

标签: url query-string


【解决方案1】:

这是一个有效的网址吗?

URL spec 表示路径应按照以下规则表示:

  path          = path-abempty    ; begins with "/" or is empty
                / path-absolute   ; begins with "/" but not "//"
                / path-noscheme   ; begins with a non-colon segment
                / path-rootless   ; begins with a segment
                / path-empty      ; zero characters

  path-abempty  = *( "/" segment )
  path-absolute = "/" [ segment-nz *( "/" segment ) ]
  path-noscheme = segment-nz-nc *( "/" segment )
  path-rootless = segment-nz *( "/" segment )
  path-empty    = 0<pchar>
  segment       = *pchar
  segment-nz    = 1*pchar
  segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
                ; non-zero-length segment without any colon ":"

  pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

长话短说,它允许在片段的最后一行定义的字符类型(这是您要放置 &amp; 的位置)。

如果我们查看sub-delims:

 sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
             / "*" / "+" / "," / ";" / "="

...所以&amp; 是允许的。


也就是说,在查询字符串之外的 URL 中看到&amp;非常不寻常的

如果你在那里放一个,那么抄写 URL 的人不太可能会认为你犯了一个错误并更改它……从而破坏它。

所以最好避免它们。


即可以先将 &audience 设置为第二个查询参数,然后将 ?internal-abhishek-jwt 设置为第二个查询参数吗?

没有。

? 开始查询字符串。将它们按此顺序排列会使&amp;audience 成为路径的一部分。

【讨论】:

  • 不寻常,但如果文件类似于tips&amp;tricks.html,那么可能。 (虽然我个人会将其重命名为tips-and-tricks.html,但这是基于意见的)。当然,更大的问题是链接是否在&lt;a&gt; 标记中,而&amp; 之后的位恰好看起来像一个转义序列。我见过的最常见的错误是something&amp;current,它变成了something¤t 并打破了它。这也适用于查询字符串,不过...
猜你喜欢
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
相关资源
最近更新 更多