【问题标题】:HttpWebRequest setting host to garbage but still getting OK responseHttpWebRequest 将主机设置为垃圾,但仍然得到 OK 响应
【发布时间】:2011-07-18 21:39:25
【问题描述】:

我正在使用 HttpWebRequest 并传入一个 IP 地址。然后我将主机设置为垃圾值。当我打电话给GetResponse() 时,我得到了一个 OK,尽管我预计这会失败,因为主机是垃圾。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("http://10.10.10.10/Default.aspx"));
request.Host = "blah.blah.blah";
request.ContentType = "text/xml";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    if (response.StatusCode == HttpStatusCode.OK) { /*always enters here */ }
}

为什么回复正常?垃圾主机不应该导致这个失败吗?

【问题讨论】:

  • 您是否使用了代理,该代理可能会吃掉错误请求并显示错误页面,或者将您重定向到其他地方?
  • (作为该评论的附录,响应中返回的内容是什么?将响应流转储为字符串并进行分析。)
  • 在代理后面但没有错误页面。如果我在 IE 中输入blah.blah.blah,我会得到 dns_server_failure。
  • 我还注意到各种 ISP/DNS 服务器现在将无效 URL 重定向到其他地方(不返回 404),一定要转储页面并查看结果。
  • 错误也可能是因为“.blah”是一个无效的域后缀

标签: c# httpwebrequest httpwebresponse


【解决方案1】:

HttpWebRequest.Host Property:

获取或设置要在独立于请求 URI 的 HTTP 请求中使用的 Host 标头值。

使用 Host 属性显式指定自定义 Host 标头值也会影响区域缓存、cookie 和身份验证。当应用程序为特定 URI 前缀提供凭据时,应用程序需要确保使用包含 Host 标头值的 URI,而不是 URI 中的目标服务器。

所以.Host对一般请求没有影响,你改变一些额外的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2020-02-09
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多