首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略请求POST请求中的标头

忽略请求POST请求中的标头
EN

Stack Overflow用户
提问于 2015-05-19 04:24:57
回答 2查看 2.3K关注 0票数 1

我正在使用import requests库发出POST请求。它在请求中添加了一些头文件,我怀疑这会导致请求失败……

代码语言:javascript
复制
r = requests.post(url, headers = {"Content-Type" : "text/zinc; charset=utf-8"}, \
                  cookies = {"cookie":cookie}, \
                  data = data)

这是r.request.headers的结果...

代码语言:javascript
复制
CaseInsensitiveDict({
    'Accept': '*/*',
    'Content-Type': 'text/zinc; charset=utf-8',
    'Accept-Encoding': 'gzip, deflate, compress',
    'User-Agent': 'python-requests/2.2.1 CPython/3.4.0 Linux/3.13.0-52-generic',
    'Cookie': 'cookie=mycookie; fanws="mycookie"'
})

所以问题是,我如何只包含我指定的头文件呢?

EN

回答 2

Stack Overflow用户

发布于 2015-05-19 04:40:31

您可以使用会话来破解通过它发送的所有请求。

代码语言:javascript
复制
import requests

session = requests.Session()

session.headers = {}

response = session.post('http://example.com')

print response.request.headers
票数 2
EN

Stack Overflow用户

发布于 2015-05-19 04:37:06

如果你真的想这样做,你可以创建一个PreparedRequest,然后在发送它之前编辑它的头。这在这里不太可能对您有帮助,但可能值得这样做,以说服自己它不会有帮助,所以…

而不是这样:

代码语言:javascript
复制
r = requests.post(url, headers = {"Content-Type" : "text/zinc; charset=utf-8"}, \
                  cookies = {"cookie":cookie}, \
                  data = data)

执行以下操作:

代码语言:javascript
复制
sess = requests.Session()
req = requests.Request('GET', url, 
                       headers={"Content-Type": "text/zinc; charset=utf-8"},
                       cookies={"cookie": cookie},
                       data=data)
preq = req.prepare()
preq.headers = {key: value for key, value in preq.headers.items()
                if key in {'Content-Type', 'Cookie'}}
r = sess.send(preq)

所有的更改都是在prepare中完成的。显然,您希望将cookies转换为Cookie标头,但不希望保留任何其他更改,所以我只是删除了除显式传递和Cookie之外的任何标头。当然,你可以在那里做任何你想做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30312200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档