【问题标题】:Get query string from URL that may be relative从可能是相对的 URL 获取查询字符串
【发布时间】:2015-12-02 20:15:59
【问题描述】:

作为自定义登录页面的一部分,我试图获取可能表示绝对或相对 URL 的 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"

【问题讨论】:

    标签: c# asp.net c#-4.0


    【解决方案1】:

    只有 URL 中的第一个问号才有意义,表示查询字符串的开始。任何后面的都被视为文字问号。

    RFC 3986 3.43.3

    它确实注意到:

    允许使用斜线(“/”)和问号(“?”)
    表示片段标识符内的数据。当心一些
    旧的、错误的实现可能无法正确处理这些数据
    当它用作相对引用的基本 URI 时

    【讨论】:

    • 所以听起来它应该是来自的子字符串?到 #。那么以这种方式解析字符串是最好的方法,还是有内置的东西可以帮助从相对 URL 中获取查询字符串?我愿意将相对网址转换为绝对网址,但目前我不知道我是在处理相对网址还是绝对网址。
    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2020-04-06
    • 2011-08-30
    相关资源
    最近更新 更多