代码之家  ›  专栏  ›  技术社区  ›  Nico

HTTP请求-绕过DNS[.NET]

  •  7
  • Nico  · 技术社区  · 16 年前

    在执行HTTP请求时是否可以(如果可以,如何)绕过DNS?

    我希望通过HTTP请求直接命中前端,而不通过NLB,而是使用正确的主机头。 因为我拥有服务器的IP,所以我只需要绕过DNS。

    我尝试使用WebRequest,用IP替换URL并设置主机头,但是这个头是受保护的。

    我该怎么做?我需要自己创建HTTP请求吗?

    注意:编辑主机文件不是一个选项

    4 回复  |  直到 10 年前
        1
  •  5
  •   Martin Brown    10 年前

    在被问到这个问题时,这与WebRequest类是不可能的。但是,在出现此问题导致的Microsoft Connect问题之后,Microsoft将主机属性添加到.NET 4.0版的httpwebrequest类中。因此,如果您使用.NET 4.0或更高版本,则可以使用此代码实现所需的功能。

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1");
    Request.Host = "www.example.com"
    

    在.NET版本4之前,唯一真正的选择是打开一个套接字并自己执行HTTP请求,或者查找具有更多功能的第三方组件。

        2
  •  2
  •   Nico    16 年前

    我设法将代理设置为远程服务器的IP地址:

    request.Proxy = new WebProxy(ip.ToString());
    

    它不适用于所有场景,但在我的情况下都适用。

        3
  •  0
  •   Community CDub    8 年前

    我自己也遇到过类似的问题,但我还是设法用插座(如马丁·布朗所提到的)来解决它。这是我的答案: https://stackoverflow.com/questions/359041/request-web-page-in-c-spoofing-the-host#359299

        4
  •  0
  •   Community CDub    8 年前

    你可以使用我的解决方案来解决这个问题,它发布在这里:

    How to set custom "Host" header in HttpWebRequest?

    这可以帮助您编辑主机头,避免使用代理解决方案。