[英]C#: How to get a value from a query string containing another url with multiple query params?
当包含查询参数的 url 包含如下查询参数的 URL 时: https://example.com/login/login.ashx?redirect_url=https://example.com?test=11&test2=22&test3=33
我怎样才能从 Url 得到https://example.com?test=11&test2=22&test3=33
?
我试过这个没有运气
redirectUrl = HttpUtility.ParseQueryString(HttpUtility.UrlEncode(context.Request.Url.Query)).Get("redirect_url");
.
这导致: https://example.com?test=11
我想要https://example.com?test=11&test2=22&test3=33
任何包含 url 字符串分隔符的 url 参数都应该首先进行 UrlEncode。
因此,您首先需要 System.Net.WebUtility.UrlEncode(string value) 您的参数 url。
var urlEncodedParameter = System.Net.WebUtility.UrlEncode("https://example.com?test=11&test2=22&test3=33");
然后创建 url
var url = $"https://example.com/login/login.ashx?redirect_url={urlEncodedParameter}";
然后重定向到那个。 而且您不需要在 controller 上解析该参数。它将在具有这样签名的端点上工作
public IActionResult Login(string redirect_url)
首先,您需要从浏览器获取完整的 url:
string full_url = HttpContext.Request.GetDisplayUrl().ToString();
然后您需要检查完整的 url 中是否存在“redirect_url”,如果存在,您可以使用Substring(int position)方法。 但是在我们需要知道“redirect_url”的 position 之前,我们可以使用LastIndexOf()方法:
if (full_url.Contains("redirect_url"))
{
return full_url.Substring(full_url.LastIndexOf("redirect_url"));
}
如果您的 full_url 中没有“redirect_url”,我们可以像这样简单地返回空字符串:
return string.Empty;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.