Как можно отправить json файл на сервер написанный на python

Вот файл с кодом js, html, scc и python. Проблема в том что не могу обработать файл через python выдает ошибку: Failed to load resource: Preflight response is not successful. Status code: 500. Просто не понимаю как обработать сам файл json, он же по идее не рядом с байта файлом создается как его в коде прописать не понимаю. Так же выдаёт ошибку XMLHttpRequest cannot load http://germameq.beget.tech/public_html/backend/receiver.py due to access control checks.

const dataForBackend = [];
const dataJson = {};

var form = document.querySelector("form");
var button = document.getElementById("button");
button.setAttribute('disabled', true);
button.style.backgroundColor = "rgb(100, 100, 100)";

var checkPresence = document.getElementById("comeR");

checkPresence.addEventListener("mouseout", function() {
  let come = document.querySelector('input[name=come]:checked')?.value;
  let display = document.getElementById("display");
  if ( come === "I can't come"){
    display.style.display = "none";
  } else {
    display.style.display = "";
  }
})

button.addEventListener("mouseover", function() {
  const data = new FormData(form);
  let dataFio = document.getElementById("fioInput").value;
  let numberPeople = document.getElementById("numberPeople").value;
  let beverages = document.querySelector('input[name=beverages]:checked')?.value;
  let come = document.querySelector('input[name=come]:checked')?.value;
  let display = document.getElementById("display");
  if ( display.style.display === ""){
    if (dataFio.length !== 0 && numberPeople !== 0 && come !== undefined && beverages !== undefined) {
      button.removeAttribute('disabled', false);
      button.style.backgroundColor = "rgb(0, 0, 0)";
      form.addEventListener("submit", function (event) {
          for (const entry of data) {
            dataForBackend.push(entry);
          }
          event.preventDefault();
          form.reset();
          console.log(dataFio)
          converter(dataForBackend);

        },
        false
      );
    }
  } else {
    if (dataFio.length !== 0 && come !== undefined){
      button.removeAttribute('disabled', false);
      button.style.backgroundColor = "rgb(0, 0, 0)";
      form.addEventListener("submit", function (event) {
        for (const entry of data) {
          dataForBackend.push(entry);
        }
        event.preventDefault();
        form.reset();
        converter(dataForBackend);
      },
      false
    )}
  }
});

function converter(value){
  for(let index = 0; index < value.length; index++) {
    let valueName = value[index][0];
    let valueData = value[index][1];
    if (valueName === "numberPeople"){
      valueData = +valueData
    }
    dataJson[valueName] = valueData;
    sendingDataToTheServer(JSON.stringify(dataJson))
  }
}


function sendingDataToTheServer(data){
  let xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200){
      console.log(this.responseText);
    }
  }
  xhttp.open("POST", "http://germameq.beget.tech/public_html/backend/receiver.py", true);
  xhttp.setRequestHeader("Content-Type", "application/json");
  xhttp.send(data);
}
body {
  margin: 70px;
  margin-left: 65px;
  font-family: Arial, Helvetica, sans-serif;
}

.answerqus {
  text-align: center;
}

#fio {
  width: 450px;
  border: 3px solid;
}

.fioBox {
  width: 405px;
  height: 40px;
  font-size: x-large;
  padding: 20px;
  text-align: left;
}

.numberBox {
  width: 405px;
  height: 20px;
  font-size: large;
  padding: 20px;
  text-align: left;
  display: inline-block;
}

.mainword {
  font-size: x-large;
  width: 400px;
}

.listpad {
  line-height: 60px;
  font-size: larger;
}

.checkBox {
  font-size: xx-large;
}

#button {
  width: 420px;
  height: 95px;
  text-align: center;
  background-color: rgb(0, 0, 0);
  color: white;
  font-size: x-large;
}

#buttonLocation{
  padding-top: 30px;
}

.radio{
  transform: scale(1.3);
  opacity: 1.1;
  cursor: pointer;
  display: inline-block;
}

.radioDisplay{
  transform: scale(1.3);
  opacity: 1.1;
  cursor: pointer;
  display: inline-block;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Pragma" content="no-cache">
    <title>Document</title>
    <link rel="stylesheet" href="style/style.css" />
    <script src="js/script.js" type="module" defer></script>
  </head>
  <body>
    <h1 class="answerqus">Ответьте пожалуйста на несколько вопросов, которые мы для Вас подготовили<br> <img src="images/icons8-двойная-стрелка-вниз.gif" alt="стрелочка вниз"> </h1>

      <form>
        <h1 class="mainword">ФИО</h1>

        <div id="fio">
          <input class="fioBox"
          type="text" placeholder="Напишите, пожалуйста, ваши ФИО" id="fioInput" name="fio" />
        </div>

        <h1 class="mainword">Сможете ли вы присутствовать на нашем торжестве?</h1>

        <div class="listpad" id="comeR">
          <input type="radio" id="IWillCome" name="come" class="radio" value="I will come">
          <label for="IWillCome">Я с удовольствием приду</label><br>
          <input type="radio" id="ICantCome" name="come" class="radio" value="I can't come">
          <label for="ICantCome"> К сожалению, не смогу присутствовать</label><br>
          <input type="radio" id="IWillInformYouLater" name="come" class="radio" value="I will inform you later">
          <label for="IWillInformYouLater">Сообщу позже</label>
        </div>

        <div id="display">
          <h1 class="mainword">Сколько людей придут вместе с вами?</h1>

          <div id="fio">
            <input class="numberBox"
            type="text" placeholder="Напишите,  пожалуйста, количество людей" id="numberPeople" name="numberPeople" />
          </div>

          <h1 class="mainword">Что предпочитаете из напитков?</h1>

          <div class="listpad">
            <input type="radio" id="redWine" name="beverages" class="radioDispla" value="red wine">
            <label for="redWine">Красное вино</label><br>
            <input type="radio" id="whiteWine" name="beverages" class="radioDispla" value="white wine">
            <label for="whiteWine">Белое вино</label><br>
            <input type="radio" id="champagne" name="beverages" class="radioDispla" value="champagne">
            <label for="champagne">Шампанское</label><br>
            <input type="radio" id="cognac" name="beverages" class="radioDispla" value="cognac">
            <label for="cognac">Коньяк</label><br>
            <input type="radio" id="whiskey" name="beverages" class="radioDispla" value="whiskey">
            <label for="whiskey">Виски</label><br>
            <input type="radio" id="vodka" name="beverages" class="radioDispla" value="vodka">
            <label for="vodka">Водка</label><br>
            <input type="radio" id="I don't drink alcohol" name="beverages" class="radioDispla" value="I don't drink alcohol">
            <label for="I don't drink alcohol">Я не пью алкоголь</label><br>
          </div>
        </div>
        <div id="buttonLocation">
          <button id="button">Отправить</button>
        </div>
      </form>
  </body>
</html>

import json
import sqlite3

connection = sqlite3.connect("data.db")
cursor = connection.cursor()

with open("back/front.json", 'r') as FrontJson:
 jsonData = json.load(FrontJson)
 for index, value in enumerate(jsonData.values()):
  fio = value
  come = value
  if index > 2:
   numberPeople = jsonData["numberPeople"]
   beverages = jsonData["beverages"]
  else:
   numberPeople = 0
   beverages = ""


cursor.execute(''' CREATE TABLE IF NOT EXISTS mainTable
 (
  ID INTEGER PRIMARY KEY AUTOINCREMENT,
  fio TEXT NOT NULL,
  come TEXT NOT NULL,
  numberPeople INT NOT NULL,
  beverages TEXT NOT NULL
 )''')

cursor.execute('''INSERT INTO mainTable(fio, come, numberPeople, beverages) VALUES   (?, ?, ?, ?)''',
            (fio, come, numberPeople, beverages),
           )



connection.commit()

Ответы (0 шт):