Bun*_*gle 85 url parsing query-parameters
我今天遇到了以下网址:
http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497
Run Code Online (Sandbox Code Playgroud)
注意查询字符串开头的加倍问号:
??blogid=122&entry_id=64497
Run Code Online (Sandbox Code Playgroud)
我的浏览器似乎没有任何问题,并运行快速书签:
javascript:alert(document.location.search);
Run Code Online (Sandbox Code Playgroud)
刚刚给了我上面显示的查询字符串.
这是一个有效的URL吗?我之所以如此迂腐(假设我是)是因为我需要为查询参数解析这样的URL,并且支持加倍的问号需要对我的代码进行一些更改.显然,如果他们在野外,我需要支持他们; 我很好奇,如果我没有完全遵守URL标准,或者它实际上是非标准URL.
Amb*_*ber 99
是的,它是有效的.只有URL中的第 ?一个具有重要性,在将其视为文字问号之后:
查询组件由第一个问号("?")字符表示,并以数字符号("#")字符或URI的末尾结束.
...
字符斜杠("/")和问号("?")可以表示查询组件中的数据.请注意,当某些较旧的错误实现用作相对引用的基本URI时(第5.1节),可能无法正确处理此类数据,这显然是因为它们在查找分层分隔符时无法区分查询数据和路径数据.但是,由于查询组件通常用于携带"key = value"对形式的标识信息,而一个常用值是对另一个URI的引用,因此有时可以更好地避免对这些字符进行百分比编码.
http://tools.ietf.org/html/rfc3986#section-3.4