首页 > 解决方案 > 从 jquery 到 Jenkins 工作的 Ajax 调用

问题描述

 var milestone_name = uiscripts.context.milestone.name;

    //AJAX block start
    $.ajax({
      url: "https://ctu-automation-server:8080/job/Check/build",
      type: "GET"
    });
    //AJAX block end

上面的 ajax 调用来自远程服务器到其他服务器上的 Jenkins 作业。在运行脚本时,我得到以下响应:

GET https://ctu-automation-server:8080/job/Check/build 0 ()

我也尝试过 POST 操作。如果我使用 http,它表示内容必须通过 https 提供,这就是我用 https 替换 URL 的原因。

注意:Jenkins 作业允许匿名触发器,我可以在本地运行它。

0响应的原因是什么?还有其他想法吗?

标签: jqueryajaxpostjenkinsget

解决方案


您可能会遇到 CORS 阻止您的请求;如果您在 FireFox 中尝试此操作,您将收到更有用的错误消息:

跨域请求被阻止:同源策略不允许在https://my.jenkins.example.com/job/jobName/build读取远程资源。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。

在浏览器中,出于安全原因,对其他网站的请求受到 CORS 的限制。请参阅https://enable-cors.org/。您可以尝试使用此 Jenkins 插件来允许来自您网站的请求https://wiki.jenkins.io/display/JENKINS/Cors+Filter+Plugin


推荐阅读