Amphyx
Amphyx

Reputation: 755

Make a correct POST request and get response data

I have an application hosted on pythonanywhere.com. It throws a 400 error if sended data does not contain data property, otherwise it returns a response data. This is Flask code of the server:

@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

And my front-end part of application should send a POST request with a data and get a response. I am trying to use fetch but it gets a 400 error though I send a JSON object with a data object:

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() })
}

Also I tried to use XMLHttpRequest:

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

But I can't find out how to disable CORS and get a response data.

Upvotes: 0

Views: 1373

Answers (1)

noobHere
noobHere

Reputation: 251

if you are having CORS issue, always check if the server accept your origin of request (other than pythonanywhere.com) if not, you should allow it from your server.

you mentioned that you are using Flask as your backend, you might want to check out this library:

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

if you follow the docs from the link, you can allow, accept http request depends on the parameter you provided.

Happy Coding

Upvotes: 1

Related Questions