HTTP请求中的Python套接字错误

时间:2012-09-30 13:20:34

标签: python http sockets

我正在尝试在客户端和服务器之间交换HTTP消息。 该请求包含HTTP / 1.0,当我将其放在请求的开头时,它可以正常工作。

client_socket.send("HTTP/1.0 400 Bad Request")

但是当我把它放在最后时,它没有收到另一方并且程序停止。

client_socket.send("GET 1.txt HTTP/1.0")

当我在HTTP和/1.0

之间为请求添加额外空间时
  

client_socket.send(“GET 1.txt HTTP / 1.0”)

它工作正常,我收到了所请求文件的内容。

我认为问题在于正斜杠,我想省略它以使我的客户端连接到用另一种语言编写的另一个给定服务器。

1 个答案:

答案 0 :(得分:2)

HTTP 1.0请求至少具有以下格式:

GET /1.txt HTTP/1.0<CRLF>
Host: the.server.com<CRLF>
<CRLF>

也就是说,所有行结尾应该是CR + LF(即,ASCII字符13和10十进制,或Python字符串中的“\ 015 \ 012”),并在第一行后出现任意数量的附加标题,空行。虽然不是严格要求,但您应始终提供Host:标头以帮助虚拟主机;没有这个,很多网站都无法运作。请注意,GET动词后面的URI部分必须是绝对的,因此以斜杠开头。