我在尝试这个密码..。
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状态而不是我的浏览器状态吗?
发布于 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联系。
发布于 2013-07-30 10:54:11
您可以尝试禁用重定向,不幸的是,我无法测试它,因为我有另一个提供者(如果这是问题)。
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的状态代码的所有东西都抛出一个.如果你想抓住它,试试这个:
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;
}https://stackoverflow.com/questions/17944752
复制相似问题