绕过XSRF令牌检查

时间:2016-07-13 15:05:42

标签: javascript jquery ajax jira csrf

我正在尝试利用jQuery AJAX将动态数据发布到JIRA中。我们的想法是通过" rest / api / 2 / issue /"来发布到JIRA REST API。

我相信我的所有jQuery都已正确布局。我遇到问题的问题是" XSRF令牌检查"执行时每当我尝试运行我的代码时,它都会返回" XSRF令牌检查失败"来自服务器。

我已经读过关于" X-Atlassian-Token"头。我把它作为我的jira服务器配置上的允许标头。即...

'标题始终设置Access-Control-Allow-Headers" X-Atlassian-Token,Authorization,Content-Type"'

我还在我的AJAX请求上设置了标头。 " X-Atlassian-Token":" no-check"

有人可以协助我让它正常工作吗? 测试的JIRA版本是6.4.12。

我目前的AJAX代码如下所示。

$.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);
    }
  });

我还应该提一下,这段代码是从我在内部创建的客户网站发送的。客户端前端和JIRA主机都在同一个内部网络上。

1 个答案:

答案 0 :(得分:0)

XSRF(跨站请求伪造)是Jira用来防止用户被欺骗提交恶意数据的安全功能。

如果您使用的是Firefox或Chrome,则可能需要将User-Agent设置为虚拟值,如下所示:

headers: {
  "X-Atlassian-Token": "nocheck",
  "Content-Type": "application/json",
  "Authorization": "Basic " + btoa("<username>:<password>"),
  "User-Agent": "xx"
},
相关问题