从可能是相对的URL中获取查询字符串

本文关键字:获取 查询 字符串 URL 相对 | 更新日期: 2023-09-27 18:25:27

作为自定义登录页面的一部分,我正在尝试获取URL字符串的querystring部分,该字符串可能表示绝对或相对URL。如果它是绝对URL,我可以使用Uri.Query属性,但相对URL不支持这样做。

它是否像获取从"的第一个实例开始的子字符串一样简单或者URL是否可能在查询字符串之前包含问号?或者查询字符串后面可以有其他文本吗?

returnUrl.Substring(returnUrl.IndexOf('?'))

其中returnUrl可以是绝对值:"http://www.example.com/anydir/any-page1?param=1"或相对值:"/anydir/any-page?param=1"

从可能是相对的URL中获取查询字符串

只有URL中的第一个问号具有指示查询字符串开始的意义。之后的任何一个都被视为一个字面上的问号。

参见RFC 3986 3.4和3.3

然而,它确实注意到:

字符斜杠("/")和问号("?")允许
表示片段标识符内的数据。注意一些
较旧的错误实现可能无法正确处理此数据
当它被用作相对引用的基本URI时