【问题标题】:Jira rest client in javascript giving errorjavascript中的Jira rest客户端给出错误
【发布时间】:2013-12-28 07:31:34
【问题描述】:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){

$.ajax({
            type: "GET",
            dataType: 'jsonp',
            url: "http://myJira.com/rest/api/2/issue/MA-6614/comment",
            username : "myusrName",
            password : "myPwd",
            success: function (data) {
                 console.log( "Sample of data:", JSON.stringify(data)); 

            },
            error: function (errormessage) {
              console.log( "errorMessage:", errormessage); 
            }
        });
});


</script>
</head>
<body> 
</body>
</html>

在运行上面的代码时,我得到 SyntaxError: missing ; before 语句 错误。 我在某处读到 Access-Control-Allow-Origin 应该用来解决问题。但是我在任何地方都找不到关于如何使用 Jira 的好的文档。

“更新”
如果我已经登录 jira,则会出现上述错误。如果我在 jira 中注销然后运行上述代码,则会出现错误 "NetworkError: 401 Unauthorized - http://myjira.com/rest/api/2/issue/MA-6614/comment?callback=jQuery1102010440085066514837_1388216960965&_=1388216960966"

上面的代码似乎有两个问题。 1. 无法在jira中进行身份验证。 2.如果我们已经在jira中进行了身份验证(这意味着浏览器有cookies)并发出请求,那么由于jsonp而显示语法错误。

【问题讨论】:

  • 您必须将用户名和密码发布到 url 对吗?
  • 没有。我必须在 http 监听器中添加用户名和密码。像 AUTHENTICATION : "usrname:password" 如果你使用用户名和密码键,jquery 会为你做。
  • @MohdAdnan,所以不能只使用 javascript 来实现吗?
  • @PimentaDev。他们撤销了支持。现在不可能。您必须使用服务器端身份验证。有关详细信息,请参阅以下答案。

标签: javascript jquery jsonp cors jira-rest-api


【解决方案1】:

所以我得到了答案。 撤销对 jira 的支持以从 javascript 进行身份验证。 Iitally jsonP 是选项,但现在不可能。 我们必须对 jira 进行服务器端身份验证。 此处示例

https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Basic+Authentication

【讨论】:

  • 你可以用 javascript 做到这一点。
  • @beplaya:你能告诉我如何用 javascript 做到这一点吗?
【解决方案2】:

你可以用 javascript 做到这一点。

function request(){
  var xhr = getXHR();

  xhr.addEventListener("error", transferFailed, false);
  xhr.addEventListener("abort", transferCanceled, false);

  xhr.open("GET", baseURL+"/rest/api/2/issue/KEY-1", false);
  xhr.setRequestHeader("Authorization", "Basic "+btoa("admin:admin"))
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send();
}

确保它是同步的并且jira服务器配置有:

标头始终将 Access-Control-Allow-Credentials 设置为“true” 标头集 Access-Control-Allow-Headers "Authorization, Origin, X-Requested-With, Content-Type, Accept"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2020-06-19
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多