Отправка заголовков http с помощью Python - PullRequest
7 голосов
/ 29 ноября 2011

Я установил небольшой скрипт, который должен кормить клиента HTML.

import socket

sock = socket.socket()
sock.bind(('', 8080))
sock.listen(5)
client, adress = sock.accept()


print "Incoming:", adress
print client.recv(1024)
print

client.send("Content-Type: text/html\n\n")
client.send('<html><body></body></html>')

print "Answering ..."
print "Finished."

import os
os.system("pause")

Но он отображается в виде обычного текста в браузере.Подскажите, пожалуйста, что мне нужно сделать?Я просто не могу найти что-то в Google, что помогает мне ..

Спасибо.

Ответы [ 2 ]

14 голосов
/ 29 ноября 2011

Заголовок ответа должен содержать код ответа, указывающий на успех. Перед строкой Content-Type добавить:

client.send('HTTP/1.0 200 OK\r\n')

Кроме того, чтобы сделать тест более заметным, поместите на страницу немного контента:

client.send('<html><body><h1>Hello World</body></html>')

После отправки ответа закройте соединение с помощью:

client.close()

и

sock.close()

Как отмечали другие авторы, заканчивайте каждую строку \r\n вместо \n.

Будут ли эти дополнения, мне удалось запустить успешный тест. В браузере я ввел localhost:8080.

Вот весь код:

import socket

sock = socket.socket()
sock.bind(('', 8080))
sock.listen(5)
client, adress = sock.accept()

print "Incoming:", adress
print client.recv(1024)
print

client.send('HTTP/1.0 200 OK\r\n')
client.send("Content-Type: text/html\r\n\r\n")
client.send('<html><body><h1>Hello World</body></html>')
client.close()

print "Answering ..."
print "Finished."

sock.close()
0 голосов
/ 30 ноября 2011

webob делает грязные http детали для вас

from webob import Response
....

client.send(str(Response("<html><body></body></html>")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...