HTTP内容无法完整呈现
来源:4-12 正确认识http协议 -2

幻汐
2021-09-02
import socket,threading
server=socket.socket()
server.bind(('0.0.0.0',8000))
server.listen()
def recv_send(sock,addr):
client_data = sock.recv(1024)
print(client_data.decode('utf8'))
http_temolate= """HTTP/1.1 200 OK
<html dir="ltr" lang="zh">
<head>
<meta charset="utf-8">
<title>新标签页</title>
<style>
body {
background: #FFFFFF;
margin: 0;
}
#backgroundImage {
border: none;
height: 100%;
pointer-events: none;
position: fixed;
top: 0;
visibility: hidden;
width: 100%;
}
[show-background-image] #backgroundImage {
visibility: visible;
}
</style>
</head>
<body>
<iframe id="backgroundImage"
src="chrome-untrusted://new-tab-page/custom_background_image?url=">
</iframe>
<ntp-app></ntp-app>
<script type="module" src="new_tab_page.js"></script>
<link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
<link rel="stylesheet" href="shared_vars.css">
</body>
</html>
"""
sock.send(http_temolate.encode('utf8'))
sock.close()
while True:
sock,addr=server.accept()
client_thread=threading.Thread(target=recv_send,args=(sock,addr))
client_thread.start()
上面是使用127.0.0.1:8000连接的玩意源码,很明显没有解析成功,标签不完整,同时页面显示与源代码一样,标签也毫无保留的显示在上面,不知道是为什么
<style>
body {
background: #FFFFFF;
margin: 0;
}
#backgroundImage {
border: none;
height: 100%;
pointer-events: none;
position: fixed;
top: 0;
visibility: hidden;
width: 100%;
}
[show-background-image] #backgroundImage {
visibility: visible;
}
</style>
我的尝试
删除上方代码:可以连接但内容为空
删除删除上方代码,同时在HTTP/1.1 200 OK
后加入了空行:可以连接但内容为空
按照我的理解网页上出现的应该是body里面的内容,上面的标签应该是title里面内容,但是不是这样的,请问老师到底是哪里出问题了,同时html代码是copy的谷歌新标签页的源码(我自己先按照视频里面敲了出来的是空白页,以为自己格式错了于是换成了这个)
写回答
1回答
-
bobby
2021-09-03
这是因为你自己写的html本身就有问题,浏览器是无法解析的
import socket,threading server=socket.socket() server.bind(('0.0.0.0',8000)) server.listen() def recv_send(sock,addr): client_data = sock.recv(1024) print(client_data.decode('utf8')) http_temolate= """HTTP/1.1 200 OK Content-Type: text/html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>htmltest</title> <style> .page-header { height: 35px; background-color: #dddddd; line-height: 35px; } .c1 { float: left; padding-left: 100px; } .c2 { float: right; padding-right: 200px; } </style> </head> <body style="margin: auto"> <div class="page-header"> <div class="c1"> ♥收藏本站 </div> <div class="c2"> <a>登陆</a> <a>注销</a> </div> </div> </body> </html> """ sock.send(http_temolate.encode('utf8')) sock.close() while True: sock,addr=server.accept() client_thread=threading.Thread(target=recv_send,args=(sock,addr)) client_thread.start()
用这个代码体验一下
00
相似问题