Javascript 绕过XSRF令牌检查
我试图利用jqueryajax将动态数据发布到JIRA中。其想法是通过“REST/API/2/issue/”发布到JIRA REST API 我相信我已经将所有jQuery都正确地布置好了。我遇到的问题是执行时的“XSRF令牌检查”。每次我尝试运行代码时,它都会从服务器返回“XSRF令牌检查失败” 我读过关于“X-Atlassian-Token”标题的文章。我在jira服务器配置中有一个允许的头。i、 e '标头始终设置访问控制允许标头“X-Atlassian-Token,授权,内容类型”' 我还设置了AJAX请求的标题。“X-Atlassian-Token”:“无支票” 有人能帮我让它正常工作吗? JIRA版本使用is 6.4.12进行测试 下面是我当前的AJAX代码,以供审阅Javascript 绕过XSRF令牌检查,javascript,jquery,ajax,jira,csrf,Javascript,Jquery,Ajax,Jira,Csrf,我试图利用jqueryajax将动态数据发布到JIRA中。其想法是通过“REST/API/2/issue/”发布到JIRA REST API 我相信我已经将所有jQuery都正确地布置好了。我遇到的问题是执行时的“XSRF令牌检查”。每次我尝试运行代码时,它都会从服务器返回“XSRF令牌检查失败” 我读过关于“X-Atlassian-Token”标题的文章。我在jira服务器配置中有一个允许的头。i、 e '标头始终设置访问控制允许标头“X-Atlassian-Token,授权,内容类型”' 我
$.ajax({
url: "https://my-jira-host.com/rest/api/2/issue/",
type: "POST",
async: false,
headers: {
"X-Atlassian-Token": "nocheck",
"Content-Type": "application/json",
"Authorization": "Basic " + btoa("<username>:<password>")
},
crossDomain: true,
dataType: "json",
data: JSON.stringify({"fields":{"project":{"key":"CLS"},"priority":{"name":"Minor"},"customfield_17125":{"value":"<Department>"},"customfield_17127":"<HOSTNAME>","customfield_17126":{"value":"<Object>"},"issuetype":{"name":"<issue-type>"},"customfield_17128":"dsfgfdsg","summary":"Department | HOSTNAME | Object","description":"sdfgfdg"}}),
success: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("POST was a success!");
console.log("HTTP Error Message: " + XMLHttpRequest.responseText);
console.log("HTTP Status: " + XMLHttpRequest.status);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("POST was a failure!");
console.log("HTTP Error Message: " + XMLHttpRequest.responseText);
console.log("HTTP Status: " + XMLHttpRequest.status);
}
});
$.ajax({
url:“https://my-jira-host.com/rest/api/2/issue/",
类型:“POST”,
async:false,
标题:{
“X-Atlassian-Token”:“nocheck”,
“内容类型”:“应用程序/json”,
“授权”:“基本”+btoa(“:”)
},
跨域:是的,
数据类型:“json”,
数据:JSON.stringify({“fields”:{“project”:{“key”:“CLS”},“priority”:{“name”:“Minor”},“customfield_17125”:{“value”:“}”,customfield_17127:”,“customfield_17126:{“value”:“}”,issuetype:{“name”:“}”,customfield_17128:“dsfgfdsg”,“summary”:“Department |主机名|对象”,“description”:“sdfgfdg”}),
成功:函数(XMLHttpRequest、textStatus、errorshown){
log(“发布成功了!”);
log(“HTTP错误消息:+XMLHttpRequest.responseText”);
log(“HTTP状态:+XMLHttpRequest.Status”);
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
log(“POST失败了!”);
log(“HTTP错误消息:+XMLHttpRequest.responseText”);
log(“HTTP状态:+XMLHttpRequest.Status”);
}
});
我还应该提到,这段代码是从我内部创建的客户端网站发送的。客户端前端和JIRA主机都在同一个内部网络上。XSRF(跨站点请求伪造)是JIRA用来防止用户被欺骗提交恶意数据的安全功能
如果您使用的是Firefox或Chrome,则可能需要使用如下伪值设置用户代理:
headers: {
"X-Atlassian-Token": "nocheck",
"Content-Type": "application/json",
"Authorization": "Basic " + btoa("<username>:<password>"),
"User-Agent": "xx"
},
标题:{
“X-Atlassian-Token”:“nocheck”,
“内容类型”:“应用程序/json”,
“授权”:“基本”+btoa(“:”),
“用户代理”:“xx”
},
但不允许设置-我仍然看到相同的问题,添加了提到的标题。没有成功