我试图从JS脚本向pythonanywhere上的Flask服务器发出一个POST请求,如下所示:
const response = await fetch('http://myusername.pythonanywhere.com/', {
method: 'POST',
mode: 'no-cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
track: track
})
});其中轨道是一个数字的nx10数组。我已经通过这样的身体通过失眠成功地向服务器提出了请求:
{
"track": [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10.234], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
}并将请求的正文内容打印到日志中,如下所示:
2021-11-16 15:57:14 Test message!
2021-11-16 15:57:14 <Request 'http://myusername.pythonanywhere.com/' [POST]>
2021-11-16 15:57:14 {'track': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10.234], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]}但是,当我尝试用第一段代码从我的web应用程序发出请求时,我在日志中得到了如下信息:
2021-11-16 15:54:21 Test message!
2021-11-16 15:54:21 <Request 'http://myusername.pythonanywhere.com/' [POST]>
2021-11-16 15:54:21 None服务器代码:
@app.route('/', methods=['POST'])
def handle_post():
req_data = request.get_json()
print("Test message!")
print(request)
print(req_data)
data = req_data['track']
trackData = np.array(data)
grade = analysisV2(trackData)
return jsonify({"grade": grade})我不知道为什么一个请求有效,而另一个请求不工作。我也尝试将我在失眠中使用的相同数据编码到JS请求体中,没有任何区别。有人看到我可能遗漏了什么吗?
发布于 2021-11-21 02:26:12
我设法弄清楚发生了什么事,以防有人好奇,而且碰巧也在做类似的事情。
这里有几个问题:
mode: 'no-cors'添加到请求中会阻止服务器使用任何实际数据进行响应,因此必须删除它。在这种情况下,CORS(app)客户端必须发送带有'Access-Control-Allow-Origin': '*'头的请求。
https://stackoverflow.com/questions/69992584
复制相似问题