【问题标题】:Http Request - Bypass DNS [.Net]Http 请求 - 绕过 DNS [.Net]
【发布时间】:2010-09-24 07:24:14
【问题描述】:

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

我想通过 HTTP 请求直接访问前端,而不通过 NLB,但使用正确的主机标头。 由于我有我的服务器的 IP,我只需要绕过 DNS。

我尝试使用 WebRequest,将 URL 替换为 IP 并设置 Host 标头,但此标头受到保护。

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

注意:编辑主机文件不是一种选择

【问题讨论】:

    标签: .net http dns


    【解决方案1】:

    在提出这个问题时,这不可能与 WebRequest 类有关。但是,在此问题引发的 Microsoft Connect 问题之后,Microsoft 将 Host 属性添加到 .Net 4.0 版中的 HttpWebRequest 类中。因此,如果您使用的是 .net 4.0 或更高版本,则可以使用此代码实现您想要的。

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

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

    【讨论】:

      【解决方案2】:

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

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

      并非在所有情况下都有效,但在我的情况下有效。

      【讨论】:

        【解决方案3】:

        我自己也遇到过类似的问题,但设法使用套接字解决了它(正如 Martin Brown 所提到的。这是我的回答:https://stackoverflow.com/questions/359041/request-web-page-in-c-spoofing-the-host#359299

        【讨论】:

        • 但是,在我的情况下,我想要 Kerberos 身份验证,并且需要 302 重定向。重新编码所有这些东西并没有真正的感觉:)
        【解决方案4】:

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

        How to set custom "Host" header in HttpWebRequest?

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-30
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多