Приложение может использовать API отражения Java для доступа и обновления полей и выполнять методы, которые запрещены нормальными правилами доступа / видимости Java. С некоторой изобретательностью это достаточно для:
При определенных обстоятельствах это может даже позволить ввести вредоносный код.
Вы можете использовать объект Request
или Uri
для получения узла url.
Использование Request.Url
string host = Request.Url.Host;
Использование Uri
Uri myUri = new Uri("http://www.contoso.com:8080/");
string host = myUri.Host; // host is "www.contoso.com"
Лучший способ и правильный способ сделать это - использовать поле Uri.Authority
Загружать и использовать Uri так:
Uri NewUri;
if (Uri.TryCreate([string with your Url], UriKind.Absolute, out NewUri))
{
Console.Writeline(NewUri.Authority);
}
Input : http://support.domain.com/default.aspx?id=12345
Output : support.domain.com
Input : http://www.domain.com/default.aspx?id=12345
output : www.domain.com
Input : http://localhost/default.aspx?id=12345
Output : localhost
Если вы хотите манипулировать URL-адресом , использование объекта Uri - хороший способ сделать это. [Д0] https://msdn.microsoft.com/en-us/library/system.uri (v = vs.110) .aspx
Используйте класс Uri и используйте свойство Host
Uri url = new Uri(@"http://support.domain.com/default.aspx?id=12345");
Console.WriteLine(url.Host);
Попробуйте это
Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));
Он выведет support.domain.com
Или попробуйте
Uri.GetLeftPart( UriPartial.Authority )
попробуйте выполнить инструкцию
Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
string pathQuery = myuri.PathAndQuery;
string hostName = myuri.ToString().Replace(pathQuery , "");
Пример1
Input : http://localhost:4366/Default.aspx?id=notlogin
Ouput : http://localhost:4366
Пример2
Input : http://support.domain.com/default.aspx?id=12345
Output: support.domain.com
Попробуйте это:
Uri.GetLeftPart( UriPartial.Authority )
Определяет части URI для метода Uri.GetLeftPart.
blockquote>
http://www.contoso.com/index.htm?date=today -> http://www.contoso.com
http://www.contoso.com/index.htm#main -> http://www.contoso.com
nntp: //news.contoso.com/123456@contoso.com -> nntp: //news.contoso.com
файл: //server/filename.ext -> file: // server
blockquote>Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search"); Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));
WWW - это псевдоним, поэтому вам не нужен он, если вы хотите домен. Вот моя функция litllte для получения реального домена из строки
private string GetDomain(string url)
{
string[] split = url.Split('.');
if (split.Length > 2)
return split[split.Length - 2] + "." + split[split.Length - 1];
else
return url;
}
.ToLower()
является избыточным.Uri
делает это автоматически. – beruic 24 May 2016 в 15:44