如何在python中发送http响应消息代码:400
我已经用python编写了一个web服务器,我想发送HTTP响应消息代码:400而不是对任何客户端请求的响应“网站即将到来!”,请告诉我如何才能做到这一点 服务器代码为:如何在python中发送http响应消息代码:400,python,Python,我已经用python编写了一个web服务器,我想发送HTTP响应消息代码:400而不是对任何客户端请求的响应“网站即将到来!”,请告诉我如何才能做到这一点 服务器代码为: import socket import re HOST = "localhost" PORT = 13555 listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listen_socket.setsockopt(socket.SOL_SOCKE
import socket
import re
HOST = "localhost"
PORT = 13555
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print ("Serving HTTP on port %s ..." % PORT)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(2048)
response = "Website Coming Soon!" #this response should be http response message code:400
http_response = "HTTP/1.1 200 OK\n"+"Content-Type: text/html\n"+"\n"+"<html><body>"+response+"</body></html>\n"
client_connection.sendall(http_response)
client_connection.close()
导入套接字
进口稀土
HOST=“localhost”
端口=13555
listen\u socket=socket.socket(socket.AF\u INET,socket.SOCK\u流)
侦听\u socket.setsockopt(socket.SOL\u socket,socket.SO\u REUSEADDR,1)
侦听\u socket.bind((主机、端口))
监听插座。监听(1)
打印(“在端口%s上提供HTTP…”%port)
尽管如此:
客户端\连接,客户端\地址=侦听\套接字。接受()
请求=client_connection.recv(2048)
response=“网站即将推出!”#此响应应为http响应消息代码:400
http\u response=“http/1.1 200确定\n”+“内容类型:text/html\n”+“\n”+“+response+”\n
客户端\u连接.sendall(http\u响应)
客户端连接。关闭()
试着了解你要讲的协议:)
HTTP相当简单,所有HTTP消息由3个基本部分组成,其中第3个是可选的:
- 请求或状态行(第一行)
- 请求头,每一行(或一些转义分布在多行上),后跟一个额外的换行符
- 请求主体,对于大多数请求和某些响应是可选的
HTTP/1.1 400 Bad request
但这里有两件事不对:
503服务不可用
潜入水中。他们非常非常直截了当。如果你仔细阅读了它,并开始按照它的意图使用HTTP,世界就会变得更好一点;) 您需要发送
HTTP/1.1 400坏请求
而不是HTTP/1.1 200 OK
我看不出您发送内容的长度。现在我使用HTTP\u response=“HTTP/1.1 400坏请求”\n“+”内容类型:text/html\n”,但浏览器没有显示任何内容现在我使用HTTP\u response=“HTTP/1.1 400坏请求”+“内容类型:text/html\n”但是浏览器没有显示任何内容。你在标题后缺少额外的换行符。@SajalAli在提出此类问题之前,请阅读RFC2616。顺便说一句,您缺少“\r”,但RFC中清楚地记录了这一点。