通过ipaddress访问网站

时间:2015-06-30 09:53:24

标签: c# dotnet-httpclient

我正在尝试通过ip地址而不是http地址访问网站。我正在尝试一些众所周知的网站,如微软和谷歌,并通过ping他们获取他们的IP地址。例如,184.87.106.199是微软,216.58.221.68是谷歌。

    async Task<HttpStatusCode> RequestPage(string url, HttpClient client) {
        var request = new HttpRequestMessage();

        try {
            var response = await client.GetAsync("http://" + url);

            Console.WriteLine(string.Format("{0} - {1}", url, response.StatusCode.ToString()));

            return response.StatusCode;
        } catch (TaskCanceledException) {
            Console.WriteLine(string.Format("{0} - Timeout", url));

            return HttpStatusCode.GatewayTimeout;
        }
    }

然而,它似乎并不适用于每个网站。如果我请求http://216.58.221.68,谷歌工作正常,但微软会返回错误的请求状态。

我错过了什么?

2 个答案:

答案 0 :(得分:6)

您无法根据IP地址可靠地访问网站。通常,服务器配置为在单个IP地址上托管多个网站,并根据URL为正确的网站提供服务。

答案 1 :(得分:2)

当您使用浏览器向网站发出HTTP请求时,浏览器本身将执行IP地址查找,然后进行连接。但是,您的浏览器将发送以下内容:

    if (value.wor_order_name) {
   angular.lowercase(value.wor_order_name).match(search);
}

这意味着远程端知道要将您发送到哪个网站,因为服务器可能托管多个站点,尤其是在共享托管环境中。

此外,为了使问题更加复杂,一些网站将拥有多个IP地址。