Python POST 请求 发送 Form-data 类型数据的一个坑点

在Python中发送multipart/form-data类型的POST请求时,必须正确设置Content-Type和数据格式,包括使用 作为行分隔符。若目标服务器要求严格,直接在字符串中换行可能不被识别,需手动添加 。解决方法是编写一个函数处理数据,确保数据按 正确分隔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python POST 请求 发送 Form-data 类型数据的一个坑点

Python 的 POST请求的出现的问题:

"Content-Type": "multipart/form-data;boundary=----WebKitFormBoundaryTm8YXcJeyKDClbU7",

发送这样类型的数据时,会自动将发送的数据进行分割,但这个时候如果目标限制严格,那么在使用python直接发送Payload的过程中,需要将进行\r\n 的补充。

  • 正确的情况
data = '''------WebKitFormBoundaryTm8YXcJeyKDClbU7\r\nContent-Disposition: form-data; name="method"\r\n\r\ngetupload\r\n------WebKitFormBoundaryTm8YXcJeyKDClbU7\r\nContent-Disposition: form-data; name="uploadID"\r\n\r\n1xxxxxxxxxx;--\r\n------WebKitFormBoundaryTm8YXcJeyKDClbU7--'''

在这里插入图片描述

  • 错误的情况
data = '''------WebKitFormBoundaryTm8YXcJeyKDClbU7
Content-Disposition: form-data; name="method"
getupload
------WebKitFormBoundaryTm8YXcJeyKDClbU7\r\nContent-Disposition: form-data; name="uploadID"
1xxxxxxxxxx;--
------WebKitFormBoundaryTm8YXcJeyKDClbU7--'''

在这里插入图片描述

  • 分析:

    • 关键在于 form-data 在传输的过程中,需要\r\n来间隔,

    • 但外面直接在 字符串中 回车形成的效果,看似和\r\n 的效果相同,但是实际的情况中会缺少这两个字符

    • 所以在直接传输的过程中,我们需要用\r\n来使用,不能直接在字符串中回车。

看到这个老哥的文章,才想到可能是这样的错误情况:
https://blog.csdn.net/Chihwei_Hsu/article/details/81943008

2023/10/8

根据使用下来的情况,写了一个函数来直接配套:

def formdatacl(data):
    temp = "\r\n".join(data.split("\n"))
    return temp

保证输入的数据,按行来分列就可以直接划分成功。 目前使用都可以
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值