首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决requests库中session.verify参数失效的问题

在使用requests库进行HTTP请求时,如果在环境变量中设置了'REQUESTS_CA_BUNDLE',并且在session对象中设置了verify参数为False,那么API请求会使用环境变量中的值而不是session对象中的值。这是因为在requests库中,当session对象中的verify参数被设置为False时,它会优先使用环境变量中的值。

这个问题的发起者(我)遇到了这个bug,它导致了API请求的安全性问题,因为本应该忽略证书验证的请求也会受到环境变量的影响。

解决方案

要解决这个问题,可以在调用session对象之前,先将'REQUESTS_CA_BUNDLE'环境变量设置为None,然后再设置session对象的verify参数。这样,API请求就会优先使用session对象中的值,而不是环境变量中的值。

以下是修改后的代码示例:

```python

import requests

import os

# 设置环境变量'REQUESTS_CA_BUNDLE'为None

os.environ['REQUESTS_CA_BUNDLE'] = None

# 创建session对象

session = requests.Session()

# 设置session对象的verify参数为False

session.verify = False

# 发起HTTP请求

response = session.request(method, url="/".join([self.base_url, url]), headers=headers, data=body, params=query)

```

在上述代码中,首先将'REQUESTS_CA_BUNDLE'环境变量设置为None,然后创建一个session对象,并将session对象的verify参数设置为False。这样,无论环境变量中的值如何设置,API请求都会优先使用session对象中的值,从而解决了该问题。

通过这种方式,我们可以确保在需要忽略证书验证的情况下,session.verify参数不会被环境变量干扰,提高了API请求的安全性和可靠性。希望这篇文章对解决这个问题有所帮助。如果有任何疑问或需要进一步的解释,请随时提出。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OGhU5MiH2fZ5fjd4najFhiYg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券