问题解决:python3 socket服务端发送html文件,火狐浏览器打开,源码以文本形式显示
Posted 酸菜超人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题解决:python3 socket服务端发送html文件,火狐浏览器打开,源码以文本形式显示相关的知识,希望对你有一定的参考价值。
浏览器请求,然后socket服务端通过open方法打开一个html文本,并发送给浏览器,代码如下:
1 import socket 2 3 4 def custom_html(): 5 6 sk = socket.socket() 7 sk.bind((\'127.0.0.1\', 8008)) 8 sk.listen(3) 9 10 while True: 11 con, add = sk.accept() 12 data = con.recv(1024) 13 print(data.decode(\'utf8\')) 14 with open(\'hello.html\', \'rb\') as f: 15 html_data = f.read() 16 con.sendall(html_data) 17 con.close() 18 19 20 if __name__ == \'__main__\': 21 custom_html()
html代码如下:
1 <h1 style="color: aquamarine">hello,huangjin</h1>
在edge浏览器下,输入127.0.0.1:8008,回车,可以正常访问:
但在火狐浏览器上面显示如下:
以文本的形式展现了出来,这显然并不是我要的东西,研究后发现少了一行代码:
1 con.sendall(bytes(\'HTTP/1.1 201 OK\\r\\n\\r\\n\', \'utf8\'))
更改后的代码为:
1 while True: 2 con, add = sk.accept() 3 data = con.recv(1024) 4 print(data.decode(\'utf8\')) 5 with open(\'hello.html\', \'rb\') as f: 6 html_data = f.read() 7 con.sendall(bytes(\'HTTP/1.1 201 OK\\r\\n\\r\\n\', \'utf8\')) 8 con.sendall(html_data) 9 con.close()
这样火狐浏览器就可以正常访问,为了防止在其他浏览器上面也会出现这样的问题,这句代码最好不要省略
:
custom_html()
以上是关于问题解决:python3 socket服务端发送html文件,火狐浏览器打开,源码以文本形式显示的主要内容,如果未能解决你的问题,请参考以下文章
Python3中,建立一个socket客户端向服务端发送json数据是报 unknown url type,为啥呢?
采用tcp协议,使用socket编程,编写程序完成客户端发送消息给服务端,服务端接到消息后,再发
Python3 & 基于TCP的方式实现客户端与服务器端互发消息