我有一個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