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

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--'''

Python POST 请求 发送 Form-data 类型数据的一个坑点_第1张图片

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

Python POST 请求 发送 Form-data 类型数据的一个坑点_第2张图片

  • 分析:

    • 关键在于 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

保证输入的数据,按行来分列就可以直接划分成功。 目前使用都可以
Python POST 请求 发送 Form-data 类型数据的一个坑点_第3张图片

你可能感兴趣的:(python)