提出正确的POST请求并获取响应数据

时间:2020-07-08 08:47:09

标签: javascript post request fetch

我在pythonanywhere.com上托管了一个应用程序。如果发送的数据不包含data属性,则抛出400错误,否则返回响应数据。这是服务器的Flask代码:

@app.route('/api', methods=['POST'])
def get_post():
    if not request.json or not 'data' in request.json:
        abort(400)
    data = request.json['data']
    # do something with the data...
    return jsonify({'response': str(data)}), 200

我的应用程序前端部分应该发送带有数据的POST请求并获得响应。我正在尝试使用fetch,但是尽管我发送了一个带有data对象的JSON对象,却出现了400错误:

function sendData(value) {
  data = { 'data': value };
  fetch('http://' + appUrl, {
      method: 'POST',
      headers: {
        'content-type': 'application/json',
      },
      mode: 'no-cors',
      body: JSON.stringify(data),
  })
  .then(data => { return data.json() })
}

我也尝试使用XMLHttpRequest

var xhr = new XMLHttpRequest();
xhr.open("POST", 'http://' + appUrl, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(data);

但是我不知道如何禁用CORS并获取响应数据。

1 个答案:

答案 0 :(得分:1)

如果遇到CORS问题,请始终检查服务器是否接受请求的来源(pythonanywhere.com除外),则应允许服务器发出请求。

您提到您正在使用Flask作为后端,您可能想检出该库:

https://flask-cors.readthedocs.io/en/latest/

如果您遵循链接中的文档,则可以允许,接受HTTP请求取决于您提供的参数。

快乐编码