我用python编写了这个httpweb服务器,它只发送回复“Website Coming Soon!”但是我希望这个web服务器应该发回客户端提供的URL,就像我写的那样
http://localhost:13555/ChessBoard_x16_y16.bmp
然后服务器应该回复相同的网址,而不是“网站即将到来!”信息。 请告诉我怎么做?你知道吗
服务器代码:
import sys
import http.server
from http.server import HTTPServer
from http.server import SimpleHTTPRequestHandler
#import usb.core
class MyHandler(SimpleHTTPRequestHandler): #handles client requests (by me)
#def init(self,req,client_addr,server):
# SimpleHTTPRequestHandler.__init__(self,req,client_addr,server)
def do_GET(self):
response="Website Coming Soon!"
self.send_response(200)
self.send_header("Content-type", "application/json;charset=utf-8")
self.send_header("Content-length", len(response))
self.end_headers()
self.wfile.write(response.encode("utf-8"))
self.wfile.flush()
print(response)
HandlerClass = MyHandler
Protocol = "HTTP/1.1"
port = 13555
server_address = ('localhost', port)
HandlerClass.protocol_version = Protocol
try:
httpd = HTTPServer(server_address, MyHandler)
print ("Server Started")
httpd.serve_forever()
except:
print('Shutting down server due to some problems!')
httpd.socket.close()
你可以按你的要求去做,但有点复杂。你知道吗
当客户端(如web浏览器)连接到您的web服务器时,它会发送如下请求:
这假设您的客户机使用的是HTTP/1.1,这可能适用于您现在所能找到的任何东西。如果您希望使用HTTP/1.0或更早版本的客户机,那么生活会更加困难,因为没有
Host:
头。你知道吗使用
Host
头的值和作为参数传递给GET
请求的路径,可以构造一个在许多情况下与客户端使用的URL相匹配的URL。你知道吗但并不一定在所有情况下都匹配:
客户机和服务器之间可能有一个代理,在这种情况下,代码看到的路径和主机名/端口可能与客户机使用的不同。
可能存在修改目标ip地址和/或端口的数据包操作规则,以便代码看到的连接与客户端使用的参数不匹配。
在
do_GET
方法中,可以通过self.headers
属性和通过self.path
的请求路径。例如:相关问题 更多 >
编程相关推荐