2014-11-27 4 views
0

Я пытаюсь сделать веб-сервер python, слушая localhost на порту 8080. Пока я могу настроить соединение, я не знаю, как получить getrequest из браузера? Когда я перехожу к: http://localhost:8080/example.txt, он должен отображать txt-файл в браузере. Но как мне получить запрос на получение?Получить запрос python webserver

Это мой код до сих пор:

host = '' 
port = 8080 

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
sock.bind((host, port)) 
sock.listen(1) 

while 1: 
    csock, caddr = sock.accept() 
    cfile = csock.makefile('rw', 0) 

Спасибо!

ответ

0

Пожалуйста, прочтите спецификации HTTP (например, IETF RFC 2616 - это некоторые устаревшие, но хорошие для первоначального чтения). Как правило, после того, как принимать(), вы должны

  • читать ввод до тех пор, пустая строка не заводятся (другими словами, последовательность CR CR видна на входе)
  • раздельного входа в линию, объединить их в поле заголовка
  • поля заголовка процесса вы должны изучить для удовлетворения с просьбой об
  • запрос на чтение лица, если
  • форма ответа и отправить его

Для первоначальной реализации вы можете опустить многие распространенные проблемы, такие как: DoS по требованию размер безопасности, chunked и другие не-равные передачи кодировки, несколько хостов и т. Д.

OTOH, если это не домашнее задание, лучше состоит в том, чтобы использовать базовый модуль BaseHTTPServer для концепции, а затем рассмотреть возможность перехода к более продвинутой реализации.

Смежные вопросы