Веб-сервер Python не отвечает на запрос CORS - PullRequest
2 голосов
/ 07 мая 2019

Я думаю, что заголовки CORS были настроены правильно. Сервер запускается, но при попытке Postman или моего веб-приложения React отправить запрос POST, сервер не отвечает и не печатает параметры POST. Если я отменяю запрос POST от Почтальона, он печатает параметры и детали запроса.

Я потратил несколько часов, пытаясь найти рабочий пример в Python 3 для создания CORS API-сервера (CORS, похоже, нужен Google Chrome при тестировании веб-приложения), но мне это не удалось.

from http.server import HTTPServer, SimpleHTTPRequestHandler
import json

class CORSRequestHandler (SimpleHTTPRequestHandler):

    def do_OPTIONS(self):
        self.send_response(200, "ok")
        self.send_header('Access-Control-Allow-Origin',
                         self.headers['origin'])
        self.send_header("Access-Control-Allow-Headers",
                         "Origin, X-Requested-With, Content-Type, Accept")
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
        self.end_headers()

    def do_POST(self):

        parameters = json.load(self.rfile)
        print(parameters)

        body = bytes(json.dumps({'trial': 'blablalbla'}), 'utf-8')

        self.send_response(200)
        self.send_header("Access-Control-Allow-Origin", "*")
        self.send_header("Access-Control-Allow-Headers",
                         "Origin, X-Requested-With, Content-Type, Accept")
        self.send_header('Content-Type', 'application/json'),
        self.end_headers()

        self.wfile.write(body)


if __name__ == '__main__':
    httpd = HTTPServer(('localhost', 9000), CORSRequestHandler)
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass

Я отправляю тело запроса в виде JSON, как из Postman, так и из приложения React. Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...