通过python套接字发送文本“ http”

Gopikrishna S

我正在尝试使用python创建HTTP服务器。关键是我要使所有工作正常,除了发送响应消息。如果邮件中包含文字httpsend()则无法使用。

这是代码片段:

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服务器套接字接收到的标头。

当我尝试发送404 Message套接字时,该问题也会出现但是,显示其他内容,就像通过套接字发送的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 ...”

在此处输入图片说明

在此处输入图片说明

文字为“ HTTP / 1.1 ...”

在此处输入图片说明

在此处输入图片说明

hello.html的HTML代码

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

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

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

甚至不会以换行符终止,而是紧随其后的是文件内容。像HTTP这样的协议相当严格地指定了必须发送的内容,而且我发现您在浏览器中看到的所有内容几乎没有什么奇迹。

尝试类似:

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

这是带有主响应行和单个标头的格式正确的HTTP 1.1响应的开始。双换行符终止标头,为客户端准备读取随后的内容。

http://www.jmarshall.com/easy/http/是许多可学的方法之一,可以更多地了解您选择使用的协议。祝好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过套接字正确发送HTTP响应

来自分类Dev

使用套接字通过HTTP发送结构

来自分类Dev

通过套接字正确发送HTTP响应

来自分类Dev

Python套接字发送消息无效的HTTP

来自分类Dev

无法通过Perl套接字发送管道HTTP请求

来自分类Dev

如何在C中通过TCP套接字通过HTTP发送文件?

来自分类Dev

如何在C中通过TCP套接字通过HTTP发送文件?

来自分类Dev

带有python套接字的HTTP Server

来自分类Dev

如何在python中通过udp(DTLS)套接字实现http / 3协议?

来自分类Dev

Python通过http发送数据

来自分类Dev

如何通过HTTP代理连接SSL套接字?

来自分类Dev

Python:通过套接字发送的消息大小

来自分类Dev

Python:通过套接字发送整数值

来自分类Dev

python通过套接字发送变量

来自分类Dev

通过套接字发送python,线程

来自分类Dev

通过套接字在python中发送消息

来自分类Dev

Python通过套接字发送文件

来自分类Dev

通过TCP套接字发送手工制作的HTTP请求时,为什么会收到HTTP 400错误请求响应?

来自分类Dev

使用套接字的HTTP请求

来自分类Dev

从Android使用HTTP或套接字

来自分类Dev

http是基于套接字的吗?

来自分类Dev

为什么我无法通过此套接字发送文本?

来自分类Dev

python套接字如何使用相同的套接字连接正确重定向http / s请求?

来自分类Dev

在Python套接字中缓存HTTP GET REQUEST

来自分类Dev

通过套接字发送对象

来自分类Dev

通过套接字发送图像

来自分类Dev

通过套接字发送BYTE *

来自分类Dev

通过套接字发送对象

来自分类Dev

无法通过套接字发送