使用Python发送POST请求上传文件时返回500错误求助
问题排查与修改建议
以下是针对你提交文件返回500错误的几个关键修改点:
1. 移除手动设置的Content-Length和Content-Type
requests库在处理multipart/form-data类型的文件上传请求时,会自动计算Content-Length并生成正确的Content-Type(包括动态boundary值),手动设置固定值会和实际请求内容不匹配,这是触发500错误的常见原因。
修改后的headers去掉这两个字段:
headers = { "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "en-US,en;q=0.9", "Connection": "keep-alive", "Cookie": "csrftoken=O9tFpNhZuZrj7DsEnBAcj0wmV00z8qE3; theme=cyborg", "Host": "cuckoo.cert.ee", "Origin": "https://cuckoo.cert.ee", "Referer": "https://cuckoo.cert.ee/submit/", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "Windows", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36", "X-CSRFToken": "O9tFpNhZuZrj7DsEnBAcj0wmV00z8qE3" }
2. 确认文件字段的正确名称
你当前files的键是"test.exe",但网站后端接收文件的字段名大概率不是这个(通常是"file"或"sample"这类通用名称)。可以通过浏览器开发者工具确认:
- 打开浏览器F12切换到Network标签
- 在网页上正常提交一次文件,找到对应的
presubmit请求 - 查看Form Data里的文件字段名称,替换到代码中
示例(假设字段名为file):
files = {"file": open("test.exe", "rb")}
3. 补充必要的表单data参数
多数文件上传接口除了文件本身,还需要其他表单参数(比如提交说明、分析选项等)。同样通过浏览器开发者工具查看正常请求的Form Data,把缺失参数添加到data中:
data = { # 示例参数,根据实际接口要求填写 "description": "test sample", "package": "none" } response = requests.post(url, headers=headers, files=files, data=data, verify=False)
4. 清理重复的Cookie字段
你的Cookie里重复了csrftoken,保留一个即可,避免服务器解析异常。
测试辅助建议
修改后可以打印响应文本,查看服务器返回的具体错误信息,帮助进一步定位问题:
print(response.text)
内容的提问来源于stack exchange,提问作者HollidayHolly
相关产品推荐
相关产品推荐

