Python请求从POST中删除Content-Length标头

 手机用户2502887873 发布于 2022-12-10 12:52

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

请求模块允许您通过传入键设置为无的字典来删除某些标头.例如

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

将确保没有用户代理与请求一起发送.

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

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

我检查请求中使用的头文件的响应(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'})

我真的很想继续使用请求模块来做这件事.这可能吗?

1 个回答
  • 您必须手动准备请求,然后删除生成的内容长度标头:

    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服务器可能会忽略您的帖子!

    如果您打算使用分块传输编码(您不必发送内容长度),则使用data参数的迭代器.请参阅文档中的Chunked-Encoded Requests.无Content-Length头将在这种情况下进行设置.

    2022-12-11 02:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有