Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过JSON/JS在Jenkins中为CSRF添加crump_Javascript_Json_Jenkins_Csrf Protection - Fatal编程技术网

Javascript 如何通过JSON/JS在Jenkins中为CSRF添加crump

Javascript 如何通过JSON/JS在Jenkins中为CSRF添加crump,javascript,json,jenkins,csrf-protection,Javascript,Json,Jenkins,Csrf Protection,我想在Jenkins通过API创造就业机会,但我无法连接到Jenkins的CSRF保护。我得到了一个面包屑,但idk知道如何将其附加到JSON或JavaScript中的url/请求以通过POST方法获得数据。有什么想法吗?我只想用JS,不用JAVA。谢谢,这应该很简单。为了通过詹金斯的CSRF,您几乎不需要做什么 #1 获取一个有效的实际CSRF碎屑,您应该使用“/crumbisuer”端点。好的,这是一个受保护的端点,因此您应该在请求中使用API令牌或凭据对其进行身份验证调用。在这里,我将如何

我想在Jenkins通过API创造就业机会,但我无法连接到Jenkins的CSRF保护。我得到了一个面包屑,但idk知道如何将其附加到JSON或JavaScript中的url/请求以通过POST方法获得数据。有什么想法吗?我只想用JS,不用JAVA。谢谢,这应该很简单。为了通过詹金斯的CSRF,您几乎不需要做什么

#1

获取一个有效的实际CSRF碎屑,您应该使用“/crumbisuer”端点。好的,这是一个受保护的端点,因此您应该在请求中使用API令牌或凭据对其进行身份验证调用。在这里,我将如何在JavaScript中实现这一点:

// **** - is a placeholder for an auth token, replace it with yours
$.get({
    url: "https://my.jenkins.io/crumbIssuer/api/json",
    contentType: "application/json",
    headers: {
        "User-Agent": "my_js_script",
        "Authorization": "****"
    }
}).done(function(data) {
    // this is how you fetch valid & actual CSRF crumb
    console.log(data.crumbRequestField + " = " + data.crumb);
});
#2

现在,既然您已经获得了一个有效且实际的CSRF碎屑的句柄,那么请将它与任何修改Jenkins中状态的请求一起发送。比如说,您的有效CSRF crump JSON如下所示:

{ "crumbRequestField": "Jenkins-Crumb", "crumb": "noop" }
因此,您的Ajax调用看起来有点像这样(注意一个额外的“Jenkins Crump”HTTP头):

这些JavaScript片段不太可能完美,但希望能为您提供正确的方向

我正在做一个项目,它是Jenkins API库,但使用Ruby。以下是一些文件,如果您需要阅读一些真正实现您所寻找的功能的源代码,可能会感兴趣:

  • (见“碎屑法”)
  • (参见“激活作业”方法)

如何生成身份验证令牌?我得到
请求标头字段,飞行前响应中的访问控制允许标头不允许Jenkins Crumb。
有什么想法吗?我发现问题是中间的代理不允许标头
// **** - is a placeholder for an auth token, replace it with yours
// simply activates a job in Jenkins, requirement for cloned jobs (aka. "Create-A-Copy-From")
$.post({
    url: "https://my.jenkins.io/job/my_job/description",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    headers: {
        "User-Agent": "my_js_script",
        "Authorization": "****",
        "Jenkins-Crumb": "noop" // makes CSRF filter in Jenkins happy
    },
    data: "description="
});