我今天看到了以下网址:
http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497
注意查询字符串开头的加倍问号:
??blogid=122&entry_id=64497
我的浏览器似乎没有任何问题,并运行快速书签:
javascript:alert(document.location.search);
刚给了我上面显示的查询字符串。
这是一个有效的网址吗?我之所以如此迂腐(假设我是)是因为我需要为查询参数解析这样的URL,并且支持加倍的问号需要对我的代码进行一些更改。显然,如果他们在野外,我需要支持他们;我很好奇,如果我没有完全遵守URL标准,或者它实际上是非标准URL,那是我的错。
答案 0 :(得分:95)
是的,它是有效的。只有URL中的第一个 ?
具有重要性,在将其视为文字问号之后才会有任何意义:
查询组件由表示 第一个问号(“?”) 字符并以数字结尾 符号(“#”)字符或结尾 URI。
...
字符斜杠(“/”)和 问号(“?”)可能代表数据 在查询组件中。谨防 有些年纪大了,错了 实现可能无法处理 数据被正确使用时 相对引用的基URI (第5.1节),显然是因为他们 无法区分查询数据 寻找时的路径数据 分层分隔符。但是,作为 查询组件经常用于 携带识别信息 形式为“key = value”对和一对 经常使用的价值是一个参考 到另一个URI,它有时更好 为了可用性而避免 百分比编码这些字符。
答案 1 :(得分:20)
作为切线相关的答案,foo?spam=1?&eggs=3
为参数spam
提供值1?