使用Python JIRA库登录企业JIRA服务器遇404及JIRA对象创建咨询
问题1:404错误的原因
- 最可能的原因是公司内部JIRA服务器配置了上下文路径(比如实际访问路径为
https://abc/jira),但你在options中仅填写了https://abc,导致JIRA库自动拼接的/api/2/serverInfo路径无效,实际应请求https://abc/[上下文路径]/api/2/serverInfo,从而触发404。 - 其次可能是公司JIRA版本较旧,默认API路径为
/api/latest/serverInfo而非/api/2/serverInfo,或者管理员禁用了/api/2/serverInfo这个基础端点。
问题2:复用已登录会话创建JIRA对象
如果你已经通过requests完成登录并获得有效会话,可通过以下两种方式复用会话创建JIRA库的对象:
方法1:传入已认证的requests.Session对象
import requests from jira import JIRA # 你的requests登录逻辑(示例) session = requests.Session() # 若为账号密码登录 session.post("https://abc/[登录接口路径]", data={"username": "你的账号", "password": "你的密码"}, verify=False) # 若为令牌登录,可直接设置请求头 # session.headers.update({"Authorization": "Bearer 你的令牌"}) # 构造JIRA对象时传入该会话 options = {'server': 'https://abc', 'verify': False} jira = JIRA(options, session=session)
方法2:手动设置认证头
如果已拿到有效认证凭证(如JSESSIONID或Bearer令牌),可直接给JIRA库的底层会话添加请求头:
from jira import JIRA options = {'server': 'https://abc', 'verify': False} jira = JIRA(options) # 根据实际认证方式设置请求头 jira._session.headers.update({ # Cookie认证示例 "Cookie": "JSESSIONID=你的会话ID", # 或Bearer令牌认证示例 # "Authorization": "Bearer 你的令牌" })
注意:若公司JIRA有上下文路径,需在options的server参数中填写完整路径,比如https://abc/jira。
内容的提问来源于stack exchange,提问作者user4343712
相关产品推荐
相关产品推荐

