查看RFC for URLs, section 3.5 片段标识符(我相信您指的是)被定义为
片段 = *( pchar / "/" / "?" )
来自Appendix A
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
未保留 = ALPHA / DIGIT / "-" / "." /“_”/“~”
子分隔符=“!” / "$" / "&" / "'" / "(" / ")"
/“*”/“+”/“,”/“;” /“=”
有趣的是,规范中还提到
“允许使用斜杠(“/”)和问号(“?”)来表示片段标识符内的数据。”
看来,真正的主播,比如
<a href="#name?a=1&b=2">
....
<a name="name?a=1&b=2">
应该是合法的,并且非常类似于普通的 URL 查询字符串。 (快速检查验证这些至少在 chrome、firefox 和 ie 中确实可以正常工作)由于这有效,我假设您可以使用您的方法来拥有类似的 URL
http://www.site.com/foo.html?real=1¶meters=2#fake=2¶meters=3
没有问题(例如,片段中的“参数”变量不应干扰查询字符串中的变量)
您还可以在必要时使用百分比编码...并且在子分隔符中定义了许多其他可用的字符。
注意:
同样来自规范:
“片段标识符组件由数字符号 (“#”) 字符的存在指示,并以 URI 结尾终止。”
所以 # 之后的所有内容都是片段标识符,不应干扰 GET 参数。