我使用以下代码从javascript向Flask服务器发送POST请求:
var form = document.getElementById('addbug');
fd = new FormData(form);
function senddata() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function() {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log("Response Received");
}
}
xhr.open('POST', '/addbug');
xhr.setRequestHeader('Content-type','binary/octet-stream');
xhr.setRequestHeader('Content-transfer-encoding','binary');
xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
fd.append('bug_summary',document.getElementById('bug_summary').value);
fd.append('csrf_token',document.getElementById('csrf_token').value);
xhr.send(fd);
return false;
}
当我在python脚本中读取这些数据时,我面临两个问题:
未填充变量request.form ['addbug'] - 即为空。以下命令:
print(str(request.form))
返回 ImmutableMultiDict([])
我只能使用request.get_data函数访问的请求体确实有数据,但格式如下:
------WebKitFormBoundaryG4ehfDXtXEwIsktm
Content-Disposition: form-data; name="bug_summary"
test bug
------WebKitFormBoundaryG4ehfDXtXEwIsktm
如何以最干净的方式从请求正文中获取数据?最好的选择是使用request.form条目,但似乎因为我使用XMLHttpRequest选项而不是烧瓶标准表单提交我不能使用它。是否有任何良好的解析选项来读取请求表单数据,或者我是否需要自己编写解析代码?