Python requests可正常POST请求 同逻辑AJAX返回400错误如何解决
解决方案
Python requests 库的json=payload参数会默认执行两个核心操作:
- 自动将Python字典序列化为JSON格式字符串
- 自动在请求头中添加
Content-Type: application/json标识,告知服务端请求体为JSON格式
你之前的AJAX代码没有同时满足这两个要求,因此触发400参数错误,修改后的正确代码如下:
var jsonData = {"a":"b"}; // 需和Python代码中payload的字段、取值完全对应 $.ajax({ url: url, type: 'POST', data: JSON.stringify(jsonData), // *必须*将JS对象序列化为JSON字符串 contentType: 'application/json; charset=utf-8', // *必须*显式指定请求体格式为JSON dataType: 'json', // 若后端返回JSON格式响应可保留,否则可注释 success: function(res) { console.log('请求成功', res); }, error: function(e) { console.log('请求失败', e); } });
常见踩坑说明
- 如果已经配置了上述两项还是报错,请先检查
jsonData的字段名、字段类型是否和Python中payload完全一致,字段不匹配也会导致服务端校验失败返回400 - 不要直接传入未序列化的JS对象作为
data参数:jQuery默认会将其转换为application/x-www-form-urlencoded格式的表单参数,和服务端要求的JSON格式不匹配
内容的提问来源于stack exchange,提问作者kamo112
相关产品推荐
相关产品推荐

