我有一个Web应用程序,您可以使用它通过为其导入一个URL来从其他网站导入信息。有人指出,您可以使用此功能访问托管在同一Web服务器上的私人站点。
因此...
如何检查给定的url是否可公开访问(无论是在同一个Web服务器上还是在不同的地方)?如何检查网址是否可公开访问?
FIX: 我落得这样做:
protected static bool IsHostWithinSegment(string Host)
{
Ping pinger = new Ping();
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
PingOptions options = new PingOptions();
options.Ttl = 1;
PingReply reply = pinger.Send(Host, 1000, buffer, options);
return reply.Status == IPStatus.Success;
}
private static Uri BindStringToURI(string value)
{
Uri uri;
if (Uri.TryCreate(value, UriKind.Absolute, out uri))
return uri;
// Try prepending default scheme
value = string.Format("{0}://{1}", "http", value);
if (Uri.TryCreate(value, UriKind.Absolute, out uri))
return uri;
return null;
}
我的,它并不能满足的唯一要求是,我们产品的一些设施将存在彼此旁边,你将无法在他们之间导入信息 - 我怀疑这需要使用代理服务器来获取事物的最终视图,但由于这不是我的项目的要求,所以我会将其留给别人。
- 我刚刚意识到,这完全解决了我的问题,因为所有可公开访问的网址都会解析为虚拟或可路由的ips,这意味着它们跳跃。
从自己的网站外键入URL到Web浏览器... – 2009-11-04 11:20:10
一个基于Web的代理就派上用场了点。甚至是一个普通的HTTP代理。 – 2009-11-04 11:21:48
我的意思是以编程方式 - 用户提交的网址,并在我得到它之前,我需要知道它不是一个私人网站托管在防火墙后的某处。 – 2009-11-04 11:23:21