do_POST отправляет 200 ответ вместо 303 - PullRequest
0 голосов
/ 11 октября 2019

Я новичок в веб-серверах и пытаюсь создать простой, используя модуль http.server из python. Я работаю на локальном сервере, который отображает форму и, отправляя эту форму, должен перенаправить ее для отображения сообщения, поэтому я использовал send_response(303), но вместо перенаправления на домашнюю страницу он отправляет ответ 200.

from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs

memory = []

form = '''<!DOCTYPE html>
  Message Board
  
    
    
{}
'' 'Класс MessageHandler (BaseHTTPRequestHandler): def do_POST (self): # Как долго было сообщение? length = int (self.headers.get ('Content-length', 0)) # Считать правильный объем данных из запроса. data = self.rfile.read (length) .decode () # Извлечь поле «message» из данных запроса. message = parse_qs (data) ["message"] [0] # Избегать тегов HTML в сообщении, чтобы пользователи не могли разбить мир + собаку. message = message.replace ("<", "<") # Сохраните его в памяти. memory.append (message) # 1. Отправьте перенаправление 303 обратно на корневую страницу. self.send_response (303) self.send_header ('Content-type', 'text / html; charset = utf-8') self.send_header ('Location', '/') # Это перейдет к исходной странице self. end_headers () def do_GET (self): # Сначала отправьте ответ 200 OK. self.send_response (200) # Затем отправьте заголовки. self.send_header ('Content-type', 'text / html; charset = utf-8') self.end_headers () # 2. Соедините ответ из формы и сохраненных сообщений. response = "" для сообщения в памяти: response + = f "{message} \ n" # 3. Отправьте ответ. self.wfile.write (form.format (response) .encode ()) if __name__ == '__main__': server_address = ('', 8000) httpd = HTTPServer (адрес_сервера, MessageHandler) httpd.serve_forever () </code>
...