我是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)。
答案 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仍在运行该服务器并正在执行重定向。