我在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并获取响应数据。
答案 0 :(得分:1)
如果遇到CORS问题,请始终检查服务器是否接受请求的来源(pythonanywhere.com
除外),则应允许服务器发出请求。
您提到您正在使用Flask作为后端,您可能想检出该库:
https://flask-cors.readthedocs.io/en/latest/
如果您遵循链接中的文档,则可以允许,接受HTTP请求取决于您提供的参数。
快乐编码