Javascript 我能';t将post请求从react表单发送到flask服务器

Javascript 我能';t将post请求从react表单发送到flask服务器,javascript,flask,fetch-api,Javascript,Flask,Fetch Api,我有一个reactjs作为前端,flask服务器作为后端。我正在尝试从注册表中发送数据(使用Formik)。当我做一个帖子请求时,我有一个错误500。 我注意到,当我使用postman时,一切都很好,并在postgresql中创建了新记录 前端已打开http://localhost:3000/register, 后端已打开http://localhost:5002/adduser 我现在该怎么办 function handleSubmit(values, actions) { const

我有一个reactjs作为前端,flask服务器作为后端。我正在尝试从注册表中发送数据(使用Formik)。当我做一个帖子请求时,我有一个错误500。 我注意到,当我使用postman时,一切都很好,并在postgresql中创建了新记录

前端已打开
http://localhost:3000/register
, 后端已打开
http://localhost:5002/adduser
我现在该怎么办

function handleSubmit(values, actions) {

  const options = {
    headers: {
      'Content-type': 'application/json',
      'Access-Control-Allow-Origin': '*',
      'Referrer-Policy': 'origin-when-cross-origin'
    },
    method: 'POST',
    mode: 'no-cors',
    body: JSON.stringify(values)
  }

fetch('http://localhost:5002/adduser', options)
    .then(response => console.log(response))
    .catch(error => console.error(error))
}
@app.route('/adduser',methods=['GET','POST'])
def寄存器():
如果request.method==“POST”:
打印(请求表['userName'])
打印(申请表格['email'])
数据={
“名称”:请求。表单[“用户名”],
“姓氏”:请求。表单[“姓氏],
“电子邮件”:请求。表单[“电子邮件”],
“用户密码”:请求.form['password'],
“电话号码”:请求。表单[“电话号码”]
}
mydb=Database(host=os.getenv('host')、Database=os.getenv('Database')、user=os.getenv('user')、password=os.getenv('password'))
mydb.insert_数据(数据)
返回jsonify({'mydata':data})
#name=请求。表单['name']
#姓氏=请求。表格[‘姓氏’]
#电子邮件=请求。表格['email']
#密码=请求。表单['password']
#电话号码=请求。表格['phoneNumber']
返回“你好”
如果名称=“\uuuuu main\uuuuuuuu”:
运行(调试=True,端口=5002)
app.secret_key=os.uradom(24)

您无法通过json内容类型请求访问request.form

你需要更换

'Content-type': 'application/json'

您的handleSubmit函数与此类似:

function handleSubmit(values, actions) {

let options = {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    method: 'POST'
  };

  options.body = new FormData();
  for (let key in values) {
    options.body.append(key, values[key]);
  }

  fetch('http://localhost:5002/adduser', options)
    .then(response => console.log(response))
    .catch(error => console.error(error))
  }
}
}

另一种可能的解决方案是保持客户端代码不变,并通过request.json而不是request.form访问数据。

您可以发布值吗?如果您收到一个500的请求,您的服务器会收到该请求,但有一个问题,很可能是您发送的数据不正常。您还可以使用postman发布您发送的请求吗?如果我使用postman,一切都正常,但当我尝试使用react时,控制台(500)中出现错误。提交
werkzeug.exceptions.HTTPException.wrap..newcls:400错误请求:浏览器(或代理)发送了一个此服务器无法理解的请求。
提交表单按钮后,无法连接到烧瓶尝试保留“内容类型”:“应用程序/json”,并用Request.json替换Request.form
function handleSubmit(values, actions) {

let options = {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    method: 'POST'
  };

  options.body = new FormData();
  for (let key in values) {
    options.body.append(key, values[key]);
  }

  fetch('http://localhost:5002/adduser', options)
    .then(response => console.log(response))
    .catch(error => console.error(error))
  }
}
}