gpt4 book ai didi

python - 通过 python 套接字发送文本 "http"

转载 作者:太空狗 更新时间:2023-10-29 20:54:12 26 4
gpt4 key购买 nike

我正在尝试使用 python 创建一个 HTTP 服务器。问题是除了发送响应消息之外,我正在使一切正常工作;如果消息包含文本 http,则 send() 不起作用。

这是代码片段:

connectionSocket.send('HTTP/1.1 200 OK text/html')

以下是我尝试过的其他方法:

connectionSocket.send(''.join('%s 200 OK text/html' % ('HTTP/1.1')))
connectionSocket.send('%s 200 OK text/html' % ('HTTP/1.1'))
msg = 'HTTP/1.1 200 OK text/html'
for i in range(0, len(msg))
connectionSocket.send(msg[i])

似乎唯一可行的是实体化 HTTP 中的任何字符,例如

connectionSocket.send('HTTP/1.1 200 OK text/html')

其中 H 等同于 H。否则浏览器不会显示从 python 服务器套接字接收到的 header 。

当我尝试通过套接字发送 404 消息 时,问题也会出现。但是,显示其他内容,就像通过套接字发送的 html 文件一样。

我想知道有什么正确的方法吗?因为,如果客户端不是浏览器,将无法理解 html 实体。

提前致谢

更新:

代码:

from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)

serverSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
serverSocket.bind(('127.0.0.1', 1240))
serverSocket.listen(1);

while True:
print 'Ready to serve...'
connectionSocket, addr = serverSocket.accept()
try:
message = connectionSocket.recv(1024)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()

#Send one HTTP header line into socket
connectionSocket.send('HTTP/1.1 200 OK text/html') ## this is not working

#Send the content of the requested file to the client
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i])
connectionSocket.close()

except IOError:
connectionSocket.send('HTTP/1.1 404 File not found') ## this is not working
connectionSocket.close();

serverSocket.close()

截图:

文本为“HTTP/1.1 ...”

enter image description here

enter image description here

文本为“HTTP/1.1 ...”

enter image description here

enter image description here

hello.html的HTML代码

<html>
<head>
<title>Test Python</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>

最佳答案

您没有返回格式正确的 HTTP 响应。你的线路

connectionSocket.send('HTTP/1.1 200 OK text/html') ## this is not working

甚至没有以换行符结尾,紧接着是文件的内容。像 HTTP 这样的协议(protocol)相当严格地指定了必须发送的内容,我发现您在浏览器中看到任何内容简直是奇迹。

尝试这样的事情:

connectionSocket.send('HTTP/1.1 200 OK\nContent-Type: text/html\n\n')

这是一个格式正确的 HTTP 1.1 响应的开始,包含一个主要响应行和一个 header 。双换行符终止 header ,让客户端准备好阅读后面的内容。

http://www.jmarshall.com/easy/http/是了解更多关于您选择使用的协议(protocol)的许多平易近人的方法之一。祝你好运!

关于python - 通过 python 套接字发送文本 "http",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22083359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com