为什么我的程序可以连接到不存在的网站?

时间:2011-11-06 13:04:57

标签: python http ironpython

我是python和网络编程的新手,我遇到了一个简单程序的问题。我基本上打开一个不存在的网站的连接,不知何故似乎连接成功。此外,我得到一个200返回代码,这意味着http服务器已响应它存在并且连接正常。这是我的代码的相关部分:

import httplib

conn = httplib.HTTPConnection("Nonexistentsite.com", 80)
conn.request("GET","/")
r  = conn.getresponse()
print r.status, r.reason
conn.close()

当我尝试google.com或任何其他现有网站而不是nonexistentsite.com时,我会得到301或302 - Moved permanently

请你澄清为什么会发生这种情况,拜托?如果重要的话,我正在使用visualStudio2010(IronPython)。

3 个答案:

答案 0 :(得分:4)

您可能正在使用假冒DNS结果的ISP,以便为您提供垃圾页有用的搜索页,而不是针对不存在的名称的错误。

在您测试Python代码的计算机上,ping Nonexistentsite.com会产生什么结果?

答案 1 :(得分:0)

在Cygwin的Python中运行你的代码,我收到Nonexistentsite.com的错误,所以我不确定IronPython是否会发生奇怪的事情。

Google.com为Moved permanently,因为Google的主页有重定向系统。例如,如果他们发现您在英国,google.com会将您重定向到google.co.uk(未经测试,我在美国,但这就是我所读过的)。如果我使用stackoverflow.com或其他没有设置为Google的复杂网站的网站试用您的代码,我会收到200 OK回复。

答案 2 :(得分:0)

我对此进行了测试,但我使用的是www.google.com。这提出了302 Found。经过一番谷歌搜索后,我发现302 Found意味着有一个重定向。这可能意味着用户被重定向到正确的Google网站以进行reigon,例如www.google.co.uk for UK。 302 - 永久移动可能是同样的事情,但它对IronPython来说只是不同。

编辑 -

它存在是因为Google仍在运行该服务器并正在执行重定向。