Envoyer le texte “http” au cours de python socket

Je suis en train de créer un serveur HTTP à l'aide de python. Le truc c'est que je suis tout fonctionne, sauf pour l'envoi d'un message de réponse; si le message est un texte http, le send() ne fonctionne pas.

Voici l'extrait du code:

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

Voici les autres que j'ai essayé:

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])

La seule chose qui semble fonctionner est l'entité flying l'un des personnage dans HTTP, comme

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

H est équivalent à H. Sinon, le navigateur ne peut pas afficher l'en-tête reçu de l'python serveur de socket.

Le problème va aussi lorsque j'essaie d'envoyer un 404 Message en bas de la douille. Les autres contenus sont affichés, cependant, comme un fichier html envoyé par le support.

Je veux savoir est-il une bonne façon de le faire? Car, si le client n'est pas un navigateur, l'entité html ne sera pas comprise.

Merci d'avance

Mise à jour:

Code:

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()

Captures d'écran:

Texte comme 'HTTP/1.1 ...'

Envoyer le texte “http” au cours de python socket

Envoyer le texte “http” au cours de python socket

Texte comme 'HTTP/1.1 ...'

Envoyer le texte “http” au cours de python socket

Envoyer le texte “http” au cours de python socket

Code HTML de hello.html

<html>
  <head>
    <title>Test Python</title>
  </head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>
Je trouve difficile de croire que la chaîne http est la source du problème que le socket n'est pas en mesure d'envoyer.
C'est ce que j'ai d'abord pensé, mais, les autres éléments sont affichés correctement. Le code envoie le code html de lecture de données à partir du fichier et le navigateur affiche correctement, tous à l'exception de l'en-tête http.
Mais le navigateur n'est pas supposer pour afficher l'en-tête http n'est-ce pas?
Veuillez fournir suffisamment d'informations pour reproduire le problème. Dites-nous qui bibliothèques, etc. vous êtes en utilisant.
Le HTTP valide est dépouillé par le navigateur, c'est la façon dont le navigateur communique avec le serveur. Si vous voyez le rendu html, alors il est probablement de travail

OriginalL'auteur Gopikrishna S | 2014-02-27