【问题标题】:Angular 2: post job on jenkinsAngular 2:在詹金斯上发布工作
【发布时间】:2017-05-15 19:17:19
【问题描述】:

我正在尝试将此 curl 命令“转换”为有角度的 HTTP 帖子,但我不知道如何发送 --user

此命令用于在 jenkins 中启动新作业:

curl -X POST 'http://10.1.11.160:8080/job/Job1/buildWithParameters?GW_IP=10.1.11.51&verbosity=aaa' --user angular:angular

我尝试了很多方法 - 我无法添加额外的标题 我正在使用来自 '@angular/http

的基本 http

这是我的代码,没有添加标题

runTest(){


 var Url = "http://10.1.11.160:8080/job/";
    var JobName = "job1" + "/";
    var Parameters = 'GW_IP=10.1.11.51&verbosity=high';
    var Action = "buildWithParameters?";
    var Job = Url + JobName + Action + Parameters ; 
    var Body = '';


    return this._http.post(Job, Body)
         .map(res => res.json());
}

这就是我想要完成的:

【问题讨论】:

    标签: angular jenkins http-post


    【解决方案1】:

    如果我正确读取了documentation,您仍然可以使用config 对象作为第三个参数来设置标题。

    return this._http.post(Job, Body, {headers:{'Authorization': 'whatcurlshowedyou'}})
         .map(res => res.json());
    

    您可能还想遵循样式指南并使用驼峰式命名您的本地人以提高可读性。

    【讨论】:

    • 我已经试过了,导致POST在我记录的pcap中变成了OPTIONS,并且没有加header
    • 您必须处理跨域资源共享 (CORS),因为您来自 Web 浏览器,并且您的应用程序可能没有由 Jenkins 服务器提供给它。 enable-cors.org
    【解决方案2】:

    好的,我设法解决了这个问题 这是帮助其他人的解决方案:

    1. 为 Jenkins 安装 CORS 插件 https://wiki.jenkins-ci.org/display/JENKINS/Cors+Filter+Plugin

    2. 在 jenkins 上配置 CORS 支持

      • 启用它
      • 添加:Access-Control-Allow-Methods:GET、PUT、OPTIONS、DELETE、POST - 或者只是 OPTIONS、POST(我认为它会起作用)
      • 添加:Access-Control-Allow-Headers:Authorization
      • 添加:Access-Control-Allow-Origins - 根据您的需要
      • 我还必须重新启动 jenkins
    3. 这是我使用的代码:

      createAuthorizationHeader(headers: Headers){ headers.append('授权', '基本' + btoa('angular:angular')); headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); }

      运行测试(){ var url = "http://10.1.11.160:8080/job/"; var jobName = "job1" + "/"; var 参数 = 'GW_IP=10.1.11.51&verbosity=high'; var action = "buildWithParameters?"; var job = url + jobName + action + 参数; var body = '';

      让 headers = new Headers(); this.createAuthorizationHeader(headers);

      return this._http.post(job, body, {headers: headers}) .map(res => res.json());

      }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多