首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-requests自动添加http头

python-requests自动添加http头
EN

Stack Overflow用户
提问于 2017-02-01 01:12:14
回答 1查看 311关注 0票数 0
代码语言:javascript
复制
def __init__(self):
   self.headers={'Accept':'application/json'}

def req1(self):
   headers=self.headers
   headers['bla']='bla'
   headers['Content-Type']='application/json'
   r=requests.post(url,headers=headers)

def req2(self):
   headers=self.headers
   headers['bla']='bla'
   r=requests.post(url + "/test1",headers=headers)

出于某种原因,当我按如下顺序执行这些函数时:

代码语言:javascript
复制
   req1()
   req2()

“‘Content Type”标头也在req2()中发送。

当我以相反的顺序执行这些函数时:

代码语言:javascript
复制
   req2()
   req1()

“‘Content Type”标头仅在req1()中发送。

发生这种情况的原因可能是什么?也许请求在没有询问的情况下添加Content-Type报头?

现在我像这样解决这个问题:

代码语言:javascript
复制
def req2():
   headers=self.headers
   headers['bla']='bla'
   del headers['Content-Type']
   r=requests.post(url + "/test1",headers=headers)

我在找一个更好的解决方案。有人能解释一下发生了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-01 01:15:28

当您将headers赋值给self.headers时,您实际上并没有复制字典,而只是创建了另一个引用。然后,当您更新headers时,self.headers也会更新,因为两者都指向相同的对象。

如果您需要实际复制字典,有多种方法可供选择,请参考:

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

https://stackoverflow.com/questions/41963518

复制
相关文章

相似问题

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