Web服务器不发送响应

时间:2017-01-15 14:05:25

标签: python python-3.x sockets

我正在尝试使用Python 3中的原始套接字编写一个简单的HTTP客户端程序。但是,尽管已经发送了一个简单的HTTP请求,服务器也不会返回响应。我的问题是服务器没有返回响应的原因。

这是我的代码:

"hello! are you tired? no, not at all!"

1 个答案:

答案 0 :(得分:2)

你在最后错过了一个空白行并错误地指定了没有斜杠的HTTP版本:

>>> client.send(b"GET /index.html HTTP1.1\r\nHost: www.google.com\r\n")

应该是:

>>> client.send(b"GET /index.html HTTP/1.1\r\nHost: www.google.com\r\n\r\n")
50
>>> client.recv(BUF_LEN).decode("utf-8")
u'HTTP/1.1 302 Found\r\nCache-Control: private\r\nContent-Type: text/html; charset=UTF-8\r\nLocation: http://www.google.co.uk/index.html?gfe_rd=cr&ei=fIR7WJ7QGejv8AeZzbWgCw\r\nContent-Length: 271\r\nDate: Sun, 15 Jan 2017 14:17:32 GMT\r\n\r\n<HTML><HEAD><meta http-equiv....

空白行告诉服务器它的标题结束,因为这是一个GET请求,所以没有有效负载,因此它可以返回内容。

如果没有HTTP / 1.1规范中的/,Google的服务器将返回错误:400 Bad Request响应。