访问在apache代理

时间:2018-01-22 15:16:27

标签: python jira

我正在尝试连接到在apache代理后面运行的Jira REST API。我尝试使用python-jira模块执行此任务,并且只要我直接连接到Jira,绕过apache代理授权就可以正常工作。但是,随着apache代理,我正在稳步获得“Err:401 Unauthorized”错误。

问题是我需要提供两次授权凭证,一个用于代理,一个用于Jira。

所有测试都在我的本地虚拟机上完成。

  • apache代理正在标准端口80上运行,并将127.0.0.1/jira重定向到127.0.0.1:8080/jira
  • jira us在8080端口上运行

这是工作curl命令,其中:

  • jirauser - 用于授权jirapass的jira用户
  • 用于授权的jirapassword
  • dGVzdDp3d3c = - 是base64编码的proxyuser:proxypass字符串

它实际上正在运行并产生结果

curl -u 'jirauser:jirapass' -X GET -H "Authorization: Basic dGVzdDp3d3c=" -H "Content-Type: application/json" "http://127.0.0.1/jira/rest/api/2/search?jql=key=DEV4"

对于python-jira模块我认为我需要调整'options'参数以添加到'headers'列表中的“Authorization:Basic dGVzdDp3d3c =”但不知何故它不起作用。

from jira import JIRA, JIRAError
import sys

username="Jira_username"
password="Jira_password"

jira_options = {
   'server': 'http://127.0.0.1/jira',
   'verify': True,
    'headers' : {
                        'X-Atlassian-Token': 'no-check',
                        'Cache-Control': 'no-cache',
                        'Content-Type': 'application/json',
                        'Authorization': 'Token token="dGVzdDp3d3c\="'
                }
}
try:
     jira = JIRA(
                 options    = jira_options,
                 basic_auth = (username,password),
                 validate   = True,
            )

except JIRAError as e:
     print("Failed in Jira connection initialisation with error [%s]" % e)
     sys.exit()

我还尝试使用librarty请求直接调用

r = requests.get('http://127.0.0.1/jira/rest/api/2/search?jql=key=DEV4',auth =('jirauser','jirapass'),headers = {'Content-Type':'application / json','Authorization':“Basic %s“%”dGVzdDp3d3c =“}}

但结果又是:401错误

我真的很困惑为什么curl命令工作但python代码失败了什么错了? (因为curl正在工作,我认为这不是环境设置中的问题)

1 个答案:

答案 0 :(得分:0)

这对我有用。

$("form").change(function(){
    validatePassword();
});