我正在构建一个web应用程序,它将有一个提交错误报告的表单。bug提交表单在提交时,使用
jira/rest/api/2/发布
端点,根据用户在表单中输入的内容创建单个问题。
我已经针对JIRA实例验证了我的应用程序,并获得了一个Oauth承载令牌,以包含在HTTP请求头中。但是,当启动此POST请求时,我收到一个401错误,并显示以下错误消息:
匿名用户无权在此项目中创建问题。请先尝试登录。
我不确定为什么JIRA服务器认为这个请求是匿名的,因为请求包含了包含Oauth令牌的“Authorization”头,我认为应该将请求作为特定用户进行身份验证。但也许我误解了Oauth令牌和JIRA实例之间的关系。
这就是触发请求的函数的外观(使用React):
submitBug() {
var jira_create_issue_api_url = "https://placeholder.org/jira/rest/api/2/issue";
var xhttp = new XMLHttpRequest();
xhttp.open("POST", jira_create_issue_api_url, true); //async POST to API resource
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("Accept", "application/json");
xhttp.setRequestHeader("X-Atlassian-Token", "no-check");
xhttp.setRequestHeader("Authorization", "Bearer <oauth token here>");
xhttp.onload = () => {
console.log("JIRA REST API responded: ");
console.log(xhttp.status);
console.log(xhttp.response);
};
var summary_text = this.props.bug_summary; //filled out by user in form
var desc_text = this.state.bug_description; //filled out by user in form
var bug_data = {
fields: {
project: {
key: "KEY"
},
summary: summary_text,
description: desc_text,
issuetype: {
name: "Bug"
}
}
};
xhttp.send(JSON.stringify(bug_data));
}
任何洞察都是非常感激的!我是用JIRA REST API开发的新手,所以可能遗漏了一些显而易见的东西。
编辑
:根据要求,标题显示在Chrome中:
接受:应用程序/json
授权:持票人[这里是oauth令牌]
内容类型:application/json
来源:[app url]
引用程序:[app url]
用户代理:[浏览器特定信息]
X-Atlassian-Token:不检查