Javascript 非管理员状态下的confluence REST API请求以401错误结束
我正在开发汇流蓝图,用户可以在jira项目之间进行选择,并将其用于特定的jira问题报告 这两个实例都彼此正确连接,并且只有当我以管理员身份登录时,我才能获得结果。对于普通用户,我得到以下信息:Javascript 非管理员状态下的confluence REST API请求以401错误结束,javascript,ajax,jira,confluence,confluence-rest-api,Javascript,Ajax,Jira,Confluence,Confluence Rest Api,我正在开发汇流蓝图,用户可以在jira项目之间进行选择,并将其用于特定的jira问题报告 这两个实例都彼此正确连接,并且只有当我以管理员身份登录时,我才能获得结果。对于普通用户,我得到以下信息: <status> <status-code>401</status-code> <message>This resource requires WebSudo.</message> </status> 我曾尝试在aja
<status>
<status-code>401</status-code>
<message>This resource requires WebSudo.</message>
</status>
我曾尝试在ajax中使用基本身份验证的登录信息,但没有帮助。当然我可以在代码中硬编码id,但是如果它被更改了怎么办?在我看来,这不是最好的解决方案。我如何处理websudo问题
谢谢你,祝你圣诞快乐,新年快乐。我是新来的(作为一名撰稿人),所以请原谅我的新手
看起来访问/rest/applinks/1.0/applicationlink/type/jira
确实需要管理员权限。但是有一个未记录的(AFAIK)解决方法,我就是这样做的
有一个Atlassian插件名为Confluence JIRA插件
。它与Confluence捆绑在一起(因此应该在您的安装中提供)。它为您提供了一些允许JIRA集成的酷特性(例如JIRA和JIRA图表宏)。为了提供集成,它还向Confluence REST API(不需要管理员访问)添加了一些有用的端点:
/rest/jiraanywhere/1.0/servers
或/rest/jira integration/1.0/servers
列出链接的jira服务器(包括applink id)/jira integration/1.0/servers/{INSERT APPLINK ID HERE}/projects
列出登录用户可用的jira项目/plugins/servlet/applinks/proxy
。它允许将简单的REST请求转发到链接的JIRA实例。例如/plugins/servlet/applinks/proxy?appId={INSERT APPLINK ID HERE}&path=%2Frest%2Fapi%2F2%2Fsearch
将调用JIRA并列出用户可用的问题(如JIRA搜索)。“简单请求”是指当前版本仅支持GET和POST HTTP方法(POST仅限于application/xml
和multipart/form data
内容类型)。servlet同时支持查询字符串和HTTP头参数。查看中servlet的源代码以获取更多信息,因为我还没有找到任何关于它的在线文档
使用此servlet,您还可以通过请求/plugins/servlet/applinks/proxy?appId={INSERT APPLINK ID HERE}&path=%2Frest%2Fapi%2F2%2Fproject
servlet在repo中的路径是confluence-jira-plugin/src/main/java/com/atlassian/confluence/plugins/jira/AppLinksProxyRequestServlet.java
,但大部分重要内容都在其基类confluence-jira-plugin/src/main/java/com/atlassian/confluence/plugins/jira/AbstractProxyServlet.java
function pickDate(e, state) {
AJS.$('#spLebenStart').datePicker({
overrideBrowserDefault: true
});
getJiraUrl();
}
function getJiraUrl(){
var appUrl = AJS.contextPath() + "/rest/applinks/1.0/applicationlink/type/jira";
$.ajax({
type: 'GET',
url: appUrl,
data: {
key: "value"
},
dataType: "xml",
success: function (xml){
jiraID = $(xml).find("id").text();
},
complete: function(){
getJiraProjects(jiraID);
},
error: function() {
alert("ERROR @ getJiraUrl");
}
});
}
function getJiraProjects(applicationId){
var restUrl = AJS.contextPath() + "/rest/applinks/1.0/entities/"+applicationId+"?os_authType=any";
$.ajax({
type: 'GET',
url: restUrl,
data: {
key: "value"
},
dataType: "xml",
success: function (xml){
jiraProjectKeys = [];
$(xml).find("entity").each(function(){
jiraProjectKeys.push({id: $(this).attr("key"), text: $(this).attr("name")});
});
},
crossDomain: true,
xhrFields: {
withCredentials: true
},
error: function() {
alert("ERROR @ getJiraProjects");
},
complete: function(){
AJS.$('#spSelect').auiSelect2({
placeholder: 'Projekt auswählen...',
data:jiraProjectKeys,
multiple: false
});
}
});
}