gpt4 book ai didi

Python 请求从 POST 中删除 Content-Length header

转载 作者:太空狗 更新时间:2023-10-30 00:35:55 39 4
gpt4 key购买 nike

我正在使用 python 请求模块对网站进行一些测试。

请求模块允许您通过传入一个键设置为 None 的字典来删除某些 header 。例如

headers = {u'User-Agent': None}

将确保没有用户代理随请求一起发送。

但是,似乎当我发布数据时,即使我指定 None 或不正确的值,请求也会为我计算正确的 Content-Length。例如。

headers = {u'Content-Length': u'999'}
headers = {u'Content-Length': None}

我检查了请求中使用的 header 的响应 (response.request.headers),我可以看到 Content-Length 已重新添加了正确的值。到目前为止,我看不到任何方法来禁用此行为

CaseInsensitiveDict({'Content-Length': '39', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept-Encoding': 'gzip, deflate, compress', 'Accept': '*/*', 'User-Agent': 'python-requests/2.2.1 CPython/2.7.6 Linux/3.13.0-36-generic'})

我真的很想继续使用请求模块来完成这项工作。这可能吗?

最佳答案

你必须 prepare the request manually ,然后删除生成的内容长度 header :

from requests import Request, Session

s = Session()
req = Request('POST', url, data=data)
prepped = req.prepare()
del prepped.headers['content-length']
response = s.send(prepped)

请注意,大多数兼容的 HTTP 服务器可能会忽略您的帖子正文!

如果您打算使用 chunked transfer encoding (您不必发送内容长度),然后为 data 参数使用迭代器。参见 Chunked-Encoded Requests在文档中。在这种情况下,不会设置 Content-Length header 。

关于Python 请求从 POST 中删除 Content-Length header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043402/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com