我需要检查给定的URL(不一定以http或https为前缀)是HTTP还是HTTPs。
这可能在C#中吗?
如果用户只给出www.dotnetperls.com没有任何前缀,我必须能够识别出它是HTTP。尝试以下,
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("www.dotnetpearls.com");
string u = request.RequestUri.Scheme;
但是这会产生无效的网址错误。它期望指定协议。
答案 0 :(得分:8)
尝试这样的事情:
public static bool IsHttps()
{
return HttpContext.Current.Request.IsSecureConnection;
}
如果您使用asp.net-web-api,则可以检查Request.RequestUri.Scheme
是否为Uri.UriSchemeHttps
。
答案 1 :(得分:5)
var uri = new Uri("https://sss.com");
var requestType= uri.Scheme;
此处requestType
会告诉您请求的类型是http
还是https
答案 2 :(得分:2)
if (url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
{
}
答案 3 :(得分:1)
我也一直在寻找相同的解决方案,但不幸的是我找不到任何解决方案。
还有一些网站也不支持 www。
所以我发送了 4 个请求,以确定该网站是否支持 https 并找到支持的那个。
我知道这不是一个好的解决方案,但它至少有效。 如果第一个有效,我不会打电话给其他人...
答案 4 :(得分:0)
您可以使用HttpRequest.IsSecureConnection
HttpContext.Current.Request.IsSecureConnection
OR,请求对象可用。
Request.IsSecureConnection
答案 5 :(得分:0)
对于ASP.net核心,可以使用对我有用的属性Request.Scheme:
var uri = String.Format("{0}://{1}",Request.Scheme,Request.Host.Value);