使用Python Jira包创建Jira Issue时遭遇HTTP 405错误求助
排查Python Jira包创建Issue时的HTTP 405错误
HTTP 405错误表示服务器不允许使用POST方法访问目标端点,结合你的代码和错误信息,从以下几个方向排查:
1. 协议不一致导致重定向问题
你的代码中配置的server是http://jira.xxx.com,但错误栈里的请求URL是https://jira.xxx.com/rest/api/2/issue。如果Jira服务器强制使用HTTPS,HTTP请求会被重定向到HTTPS地址,而POST请求在重定向后可能被转为GET请求,从而触发405错误。
解决方法:将代码里的server地址改为HTTPS:
jiraOptions = {'server': "https://jira.xxx.com"}
2. 验证用户权限
确认你使用的basic_auth账号具备创建Issue的权限:
- 用该账号登录Jira网页端,手动创建同项目(p1)、同类型(Bug)的Issue,测试是否能成功
- 检查该账号在项目p1中的角色权限,确保包含“创建问题”的权限
3. 直接测试API端点可用性
用curl工具直接调用Jira创建Issue的API,验证服务器是否接受POST请求:
curl -X POST -u "xxx:xxx" -H "Content-Type: application/json" -d '{ "fields": { "project": {"key": "p1"}, "summary": "test curl", "description": "test desc", "issuetype": {"name": "Bug"}, "reporter": {"name": "xxxx"} } }' https://jira.xxx.com/rest/api/2/issue
如果该请求也返回405,说明问题出在Jira服务器配置(比如反向代理限制POST方法、API路径错误等);如果请求成功,则排查Python Jira包的配置或版本问题。
4. 检查字段参数合法性
确认请求中的字段符合Jira项目要求:
- 项目key“p1”是否正确存在
- 问题类型“Bug”是否是项目p1允许的类型
- reporter用户名“xxxx”是否是Jira中有效的账号
- 部分项目可能有未设置的必填字段,导致请求被拒绝(这类情况通常返回400,但也可能因服务器配置不同表现为405)
5. 更新Python Jira包版本
旧版本的jira包可能存在兼容性问题,尝试升级到最新版本:
pip install --upgrade jira
内容的提问来源于stack exchange,提问作者Jed Feng
相关产品推荐
相关产品推荐

