首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# - httpwebrequest状态代码返回200,而不是404。

c# - httpwebrequest状态代码返回200,而不是404。
EN

Stack Overflow用户
提问于 2013-07-30 10:38:31
回答 2查看 3.7K关注 0票数 2

我在尝试这个密码..。

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.goo4le.com/");
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
  Console.Write((int)response.StatusCode);
}

goo4le是一个不存在的域。所以它应该返回404。相反,它返回200状态。

我认为这是因为我的宽带提供商使用了一个自定义404页面。

这就是我所看到的当我在浏览器中输入goo4le.com时。

有人能告诉我如何获得真正的http状态而不是我的浏览器状态吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-30 10:46:05

我实际上没有任何状态代码运行这一点,我收到一个DNS错误,我不能查找域。

我想你对ISP的看法是完全正确的,如果你没有得到这个错误,他们可能会通过DNS重定向来实现这一点。您可以使用您的ISP提供的DNS服务器解决此问题,请尝试google 8.8.8.8、8.8.4.4 (https://developers.google.com/speed/public-dns/)。

这是他们的常见问题

与我的ISP的DNS服务或其他开放的DNS解析器有何不同?我怎么知道它是否更好呢? 打开解析器和您的ISP都提供DNS解析服务。我们邀请您尝试使用作为您的主或辅助DNS解析器以及任何其他替代DNS服务。在识别适合您的DNS解析器时,需要考虑许多问题,比如响应的速度、可靠性、安全性和有效性。与不同,一些ISP和开放解析器阻塞、筛选或重定向DNS响应。 Google如何处理不存在的域? 如果您对不存在的域名发出查询,则始终按照DNS协议标准返回一个NXDOMAIN记录。浏览器应将此响应显示为DNS错误。相反,如果您收到错误消息以外的任何响应(例如,您被重定向到另一个页面),这可能是以下结果:客户端应用程序(如浏览器插件)正在为不存在的域显示备用页。一些ISP可能拦截并替换所有NXDOMAIN响应,以导致它们自己的服务器的响应。如果您担心ISP正在拦截Google请求或响应,请与ISP联系。

票数 1
EN

Stack Overflow用户

发布于 2013-07-30 10:54:11

您可以尝试禁用重定向,不幸的是,我无法测试它,因为我有另一个提供者(如果这是问题)。

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.goo4le.com/");
request.Method = "HEAD";
request.AllowAutoRedirect = false;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
  Console.Write((int)response.StatusCode);
}

如果它正常工作,它很可能会抛出一个异常,因为返回一个不是200的状态代码的所有东西都抛出一个.如果你想抓住它,试试这个:

代码语言:javascript
复制
try
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.goo4le.com/");
    request.Method = "HEAD";
    request.AllowAutoRedirect = false;
    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
  Console.Write((int)response.StatusCode);
}

}
catch (WebException e)
{
   // in this case it was a status code exception (not status 200...)
   if (e.Response != null) Console.Write((int)e.Response.StatusCode);
   else throw;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17944752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档