我正在尝试创建一个简单的Web浏览器。 我有一个index.html文件放在我的本地。我尝试启动客户端服务器连接,然后在浏览器中显示html文件。
我可以打开index.html文件并阅读其中的一些内容,除了它的一些内容。有链接指向本地目录中的图像,但在浏览器中单击它时,它不会打开。
以下是示例代码。
HOST, PORT = '', 8888
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)
listen_socket.listen(1)
print('Serving HTTP on port %s ...' % PORT)
os.chdir("some directory where index.html is present")
open_file=open('index.html','r')
print(os.getcwd())
#http_response=open_file.read()
""" sample html code where image exists
<image src="./images/welcome.png" height=180px />
The index.html is perfectly fine, but i'm not able to display the images
in browser"""
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print(request.decode('utf-8'))
http_response = open_file.read()
client_connection.sendall((str.encode(http_response)))
client_connection.close()
是否需要进行某种特殊编码才能显示图像?
请注意,我无法使用任何外部模块。
答案 0 :(得分:0)
对于要被视为有效html文件的内容,需要将所需的内容作为某种规则集发送到解码器,如浏览器,以实现它应该对待它具有< HTTP / 1.1 的强>协议以及内容类型的类型为 html ,因此请添加:
client_connection.send('HTTP/1.1 200 OK\nContent-Type: text/html\n\n')
之前
client_connection.sendall(http_response.encode('UTF-8'))